返回

TypeScript中的类与接口:理解面向对象编程的关键概念

前端

TypeScript中的类

TypeScript中的类是用来定义对象类型的一种方式。类可以包含属性(变量)和方法(函数)。属性定义了对象的特征,方法定义了对象的行为。

例如,我们可以创建一个手机类,该类具有以下属性和方法:

class 手机 {
  name: string;
  color: string;

  constructor(name: string, color: string) {
    this.name = name;
    this.color = color;
  }

  打电话(phoneNumber: string) {
    console.log(`正在拨打${phoneNumber}`);
  }

  发短信(phoneNumber: string, message: string) {
    console.log(`正在发送短信:${message}${phoneNumber}`);
  }
}

我们可以使用手机类来创建对象,如下所示:

const iPhone = new 手机('iPhone 13 Pro', '深空灰');
iPhone.打电话('10086');
iPhone.发短信('10086', '你好,世界!');

TypeScript中的接口

TypeScript中的接口是一种用来定义对象契约的一种方式。接口定义了对象必须具有的属性和方法,但不包含实现细节。

例如,我们可以创建一个电话接口,该接口定义了如下属性和方法:

interface 电话 {
  name: string;
  color: string;
  打电话(phoneNumber: string): void;
  发短信(phoneNumber: string, message: string): void;
}

我们可以使用电话接口来定义对象类型,如下所示:

interface 智能手机 extends 电话 {
  摄像头数量: number;
  电池容量: number;
}

我们可以使用智能手机接口来创建对象,如下所示:

const SamsungGalaxyS22 = new 智能手机('Samsung Galaxy S22', '黑色', 3, 4500);
SamsungGalaxyS22.打电话('10086');
SamsungGalaxyS22.发短信('10086', '你好,世界!');

继承和多态

继承是面向对象编程中的一种重要概念。继承允许一个类从另一个类继承属性和方法。子类可以覆盖父类的方法,从而实现不同的行为。

例如,我们可以创建一个苹果手机类,该类继承自手机类,如下所示:

class 苹果手机 extends 手机 {
  操作系统: string;

  constructor(name: string, color: string,操作系统: string) {
    super(name, color);
    this.操作系统 = 系统;
  }

  打电话(phoneNumber: string) {
    super.打电话(phoneNumber);
    console.log(`使用FaceTime拨打${phoneNumber}`);
  }
}

我们可以使用苹果手机类来创建对象,如下所示:

const iPhone13Pro = new 苹果手机('iPhone 13 Pro', '深空灰', 'iOS 15');
iPhone13Pro.打电话('10086');

多态是面向对象编程中另一种重要概念。多态允许子类对象以不同的方式响应相同的调用。

例如,我们可以在一个数组中存储不同类型的手机对象,如下所示:

const 手机数组: 手机[] = [
  new 手机('华为Mate 40 Pro', '黑色'),
  new 苹果手机('iPhone 13 Pro', '深空灰', 'iOS 15'),
  new 三星GalaxyS22('三星Galaxy S22', '黑色', 3, 4500)
];

手机数组.forEach((手机) => {
  手机.打电话('10086');
});

当我们调用打电话方法时,每个手机对象都会以不同的方式响应。华为Mate 40 Pro会使用华为的拨号器拨打电话,iPhone 13 Pro会使用FaceTime拨打电话,而三星Galaxy S22会使用三星的拨号器拨打电话。

总结

在本篇文章中,我们探讨了TypeScript中的类和接口。类是用来定义对象类型的一种方式,接口是用来定义对象契约的一种方式。继承和多态是面向对象编程中两个重要概念。继承允许一个类从另一个类继承属性和方法,多态允许子类对象以不同的方式响应相同的调用。