返回

Typescript 4 中引入的类

前端

类及其使用

在 TypeScript 中,类是一种用于表示具有共同特征和行为的对象的模板。使用类可以将具有相似属性和行为的对象进行分组,并使用继承机制来创建新的类,从而提高代码的可重用性和可维护性。

类的定义包括两部分:类名和类体。类名是用来标识类的名称,而类体则包含类的属性和方法。例如,以下代码定义了一个名为 Person 的类:

class Person {
  name: string;
  age: number;

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

  greet() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  }
}

类的构造函数用于在创建类的实例时初始化类的属性。构造函数必须与类的名称相同,并且不能有任何返回值类型。在上面的例子中,Person 类的构造函数接受两个参数:nameage,并将其分别赋值给类的属性 nameage

类的属性是用来存储数据值的变量。类的属性可以是任何类型,包括原始类型(如字符串、数字、布尔值等)和引用类型(如数组、对象等)。在上面的例子中,Person 类有两个属性:nameage,分别用来存储人的姓名和年龄。

类的属性也可以设置为 privateprotectedpublic,以控制对这些属性的访问权限。private 属性只能在类的内部访问,protected 属性只能在类及其派生类中访问,而 public 属性可以在任何地方访问。

类的函数或方法定义了对象的行为。类的方法可以是任何类型,包括普通的函数、箭头函数或生成器函数。在上面的例子中,Person 类有一个方法 greet(),该方法用于向控制台打印人的姓名和年龄。

类的函数也可以设置为 privateprotectedpublic,以控制对这些方法的访问权限。private 函数只能在类的内部调用,protected 函数只能在类及其派生类中调用,而 public 函数可以在任何地方调用。

类的继承是指一个类从另一个类派生的过程。派生类继承了基类的所有属性和方法,并且可以添加自己的属性和方法。在上面的例子中,Student 类继承了 Person 类,这意味着 Student 类具有 nameage 属性,以及 greet() 方法。

多态是指对象能够以不同的方式响应相同的消息。在 TypeScript 中,多态可以通过继承和接口来实现。在上面的例子中,Person 类和 Student 类都可以响应 greet() 消息,但是它们以不同的方式响应该消息。Person 类输出人的姓名和年龄,而 Student 类输出人的姓名、年龄和学校名称。

抽象类是指不能被实例化的类。抽象类用于定义通用的属性和方法,而具体的实现则留给派生类。在 TypeScript 中,抽象类可以使用 abstract 来定义。在上面的例子中,Person 类是一个抽象类,因为它包含了一个抽象方法 greet()

接口是一种用于定义对象属性和方法的契约。接口不能被实例化,但它可以被类实现。在 TypeScript 中,接口可以使用 interface 关键字来定义。在上面的例子中,PersonInterface 接口定义了 nameage 属性,以及 greet() 方法。Person 类和 Student 类都实现了 PersonInterface 接口,这意味着它们都必须具有 nameage 属性,以及 greet() 方法。

访问控制符用于控制对类的属性和方法的访问权限。在 TypeScript 中,有三个访问控制符:publicprotectedprivatepublic 访问控制符表示属性或方法可以在任何地方访问,protected 访问控制符表示属性或方法只能在类及其派生类中访问,而 private 访问控制符表示属性或方法只能在类的内部访问。在上面的例子中,nameage 属性是 public 的,greet() 方法也是 public 的。

静态成员是属于类本身而不是类实例的属性或方法。静态成员可以使用 static 关键字来定义。在上面的例子中,numPeople 属性是一个静态属性,它用于存储创建的 Person 对象的数量。createPerson() 方法是一个静态方法,它用于创建一个新的 Person 对象。

结论

TypeScript 4 中的类是一种强大的工具,它可以帮助开发者构建健壮且可扩展的应用程序。通过使用类,开发者可以将具有共同特征和行为的对象进行分组,并使用继承机制来创建新的类,从而提高代码的可重用性和可维护性。

类还可以使用访问控制符来控制对属性和方法的访问权限,并可以使用静态成员来定义属于类本身而不是类实例的属性或方法。