TypeScript 中的 class 是基于 ECMAScript 2015 (ES6) 引入的类语法的扩展。在 TypeScript 中,类是一种用于创建对象的蓝图或模板。它封装了对象的属性和方法,让代码更加模块化和可重用。
类的基本结构
class MyClass {
// 类的属性(字段)
myProperty: string;
// 构造函数
constructor(initialProperty: string) {
this.myProperty = initialProperty;
}
// 类的方法
myMethod(): void {
console.log(this.myProperty);
}
}
// 创建 MyClass 的一个实例
const myInstance = new MyClass("Hello, World!");
// 调用实例的方法
myInstance.myMethod(); // 输出: Hello, World!
这段代码展示了在TypeScript中如何定义一个类(MyClass),创建这个类的一个实例(myInstance),并调用该实例的一个方法(myMethod)。
- 类的属性:
myProperty
是一个字符串类型的属性,它用于存储类的实例的某个状态或数据。 - 构造函数:
constructor(initialProperty: string)
是一个特殊的方法,用于在创建类的实例时初始化对象。这里,它接受一个字符串参数initialProperty
,并将其值赋给类的
myProperty
属性。注意,在TypeScript中,即使你没有显式地定义构造函数,编译器也会为你生成一个空的构造函数。 - 类的方法:
myMethod()
是一个没有参数和返回值(返回类型为 void)的方法。它使用console.log
输出myProperty
属性的值。 - 类的实例: 通过
new
关键字和类名MyClass
创建了MyClass
类的一个新实例,并将其赋值给常量myInstance
。在创建实例时,传递了字符串"Hello, World!"
作为参数给构造函数,这个值被用于初始化myInstance
实例的myProperty
属性。 - 实例的方法: 调用
myInstance
实例的myMethod
方法。由于myMethod
方法内部使用console.log
输出了myProperty
属性的值,而myProperty
属性已经被初始化为"Hello, World!"
,因此控制台将显示输出Hello, World!
。
this 关键字有一个特殊的含义,它指的是当前对象的上下文(context)。在类的方法中,当方法作为实例方法被调用时(即通过实例对象调用),this 会自动指向调用它的那个实例。
类的继承
在TypeScript中,类的继承是一个非常重要的概念,它允许你基于一个或多个已存在的类来创建新的类。继承使得代码的重用和扩展变得更加容易。
class Animal {
move(distanceInMeters: number = 0) {
console.log(`Animal moved ${
distanceInMeters}m.`);
}
}
class Dog extends Animal {
bark() {
console.log('Woof! Woof!');
}
}
const dog = new Dog();
dog.bark();
dog