Typescript 4 中引入的类
2024-01-23 11:52:49
类及其使用
在 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
类的构造函数接受两个参数:name
和 age
,并将其分别赋值给类的属性 name
和 age
。
类的属性是用来存储数据值的变量。类的属性可以是任何类型,包括原始类型(如字符串、数字、布尔值等)和引用类型(如数组、对象等)。在上面的例子中,Person
类有两个属性:name
和 age
,分别用来存储人的姓名和年龄。
类的属性也可以设置为 private
、protected
或 public
,以控制对这些属性的访问权限。private
属性只能在类的内部访问,protected
属性只能在类及其派生类中访问,而 public
属性可以在任何地方访问。
类的函数或方法定义了对象的行为。类的方法可以是任何类型,包括普通的函数、箭头函数或生成器函数。在上面的例子中,Person
类有一个方法 greet()
,该方法用于向控制台打印人的姓名和年龄。
类的函数也可以设置为 private
、protected
或 public
,以控制对这些方法的访问权限。private
函数只能在类的内部调用,protected
函数只能在类及其派生类中调用,而 public
函数可以在任何地方调用。
类的继承是指一个类从另一个类派生的过程。派生类继承了基类的所有属性和方法,并且可以添加自己的属性和方法。在上面的例子中,Student
类继承了 Person
类,这意味着 Student
类具有 name
和 age
属性,以及 greet()
方法。
多态是指对象能够以不同的方式响应相同的消息。在 TypeScript 中,多态可以通过继承和接口来实现。在上面的例子中,Person
类和 Student
类都可以响应 greet()
消息,但是它们以不同的方式响应该消息。Person
类输出人的姓名和年龄,而 Student
类输出人的姓名、年龄和学校名称。
抽象类是指不能被实例化的类。抽象类用于定义通用的属性和方法,而具体的实现则留给派生类。在 TypeScript 中,抽象类可以使用 abstract
来定义。在上面的例子中,Person
类是一个抽象类,因为它包含了一个抽象方法 greet()
。
接口是一种用于定义对象属性和方法的契约。接口不能被实例化,但它可以被类实现。在 TypeScript 中,接口可以使用 interface
关键字来定义。在上面的例子中,PersonInterface
接口定义了 name
和 age
属性,以及 greet()
方法。Person
类和 Student
类都实现了 PersonInterface
接口,这意味着它们都必须具有 name
和 age
属性,以及 greet()
方法。
访问控制符用于控制对类的属性和方法的访问权限。在 TypeScript 中,有三个访问控制符:public
、protected
和 private
。public
访问控制符表示属性或方法可以在任何地方访问,protected
访问控制符表示属性或方法只能在类及其派生类中访问,而 private
访问控制符表示属性或方法只能在类的内部访问。在上面的例子中,name
和 age
属性是 public
的,greet()
方法也是 public
的。
静态成员是属于类本身而不是类实例的属性或方法。静态成员可以使用 static
关键字来定义。在上面的例子中,numPeople
属性是一个静态属性,它用于存储创建的 Person
对象的数量。createPerson()
方法是一个静态方法,它用于创建一个新的 Person
对象。
结论
TypeScript 4 中的类是一种强大的工具,它可以帮助开发者构建健壮且可扩展的应用程序。通过使用类,开发者可以将具有共同特征和行为的对象进行分组,并使用继承机制来创建新的类,从而提高代码的可重用性和可维护性。
类还可以使用访问控制符来控制对属性和方法的访问权限,并可以使用静态成员来定义属于类本身而不是类实例的属性或方法。