Appearance
继承
继承是面向对象编程(OOP)的核心特性之一。在 TypeScript 中,我们使用 extends 关键字来实现类之间的继承。
单继承
与 JavaScript 一样,TypeScript 中的类继承具有单根性(Single Inheritance),即一个子类只能有一个直接父类。
基本语法
typescript
class Father {
constructor(public name: string) {}
info(): void {
console.log(`Father Name: ${this.name}`);
}
}
class Child extends Father {
constructor(
name: string,
public age: number,
) {
// 1. 必须调用 super() 传递参数给父类构造函数
super(name);
}
// 2. 使用 override 明确表示重写父类方法
override info(): void {
console.log(`Child Name: ${this.name}, Age: ${this.age}`);
// 3. 通过 super.xxx() 调用父类方法
super.info();
}
}
const c = new Child('小明', 18);
c.info();核心关键字
1. extends
用于声明继承关系。子类会自动获得父类中所有非私有(public 和 protected)的属性和方法。
2. super
super 关键字有两种主要用法:
- 作为函数调用 (
super()):- 必须在子类的
constructor中首先调用。 - 用于初始化父类。如果子类定义了构造函数,则必须显式调用
super(),否则 TS 会报错。
- 必须在子类的
- 作为对象引用 (
super.method()):- 用于在子类方法中访问父类的公开或受保护的方法。
注意
super只能用于访问父类的方法,不能用于访问父类的实例属性。
3. override
这是 TypeScript 4.3 引入的关键字,用于显式标注方法重写:
- 意图明确:让代码阅读者一眼看出该方法覆盖了父类同名方法。
- 安全性检查:如果父类中不存在该方法,TS 会报错,防止因拼写错误而未能正确重写的 Bug。
配置提示
如果你希望强制要求重写方法必须添加 override 关键字,可以在 tsconfig.json 中开启: "noImplicitOverride": true
