类与接口
类如何实现一个或多个接口?
interface Alarm {
alert(): void;
}
interface Light {
lightOn(): void;
lightOff(): void;
}
class Car implements Alarm, Light {
alert() {
console.log("Car alert");
}
lightOn() {
console.log("Car light on");
}
lightOff() {
console.log("Car light off");
}
}
- 语法:
class 类名 implements 接口A, 接口B; - 约束: 必须实现所有接口声明的全部成员, 否则编译报错;
- 用途: 用接口描述"具备什么能力", 一个类可以同时具备多种能力;
接口如何继承类?
- 前提: 声明类的同时也声明了一个同名类型;
- 范围: 该类型只包含类的实例属性和方法, 不含静态成员与构造函数;
- 做法: 接口
extends该类, 再追加自己的成员;
class Point {
x: number;
y: number;
constructor(x: number, y: number) {
this.x = x;
this.y = y;
}
}
interface Point3d extends Point {
z: number;
}
const point3d: Point3d = { x: 1, y: 2, z: 3 };
- 效果: 得到的接口可以用对象字面量直接满足, 用于给类实例补充结构化描述;