跳到主要内容

类与接口

类如何实现一个或多个接口?​

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 };
  • 效果: 得到的接口可以用对象字面量直接满足, 用于给类实例补充结构化描述;