跳到主要内容

接口

接口如何声明对象形状?​

interface Person {
id: number;
name: string;
}
  • 作用: 用接口名描述一组属性的名称与类型, 供变量、参数、返回值复用;
  • 检查: 赋值对象必须包含全部必须属性, 且类型匹配;

属性的只读、可选与索引签名怎么写?​

interface Person {
readonly id: number; // 只读属性, 初始化后不可修改
name: string; // 必须属性, 不能省略
age?: number; // 可选属性, 可以省略
[propName: string]: string | number; // 任意属性
}
  • readonly: 只读, 不允许在对象创建后改写;
  • ?: 可选, 允许缺省;
  • 索引签名 [propName: string]: 允许任意属性名;
  • 约束: 索引签名的值类型必须同时兼容所有具名属性的类型, 例中 id 为 number、name 为 string, 故写成其联合;

接口如何继承?​

interface Alarm {
alert(): void;
}

interface LightableAlarm extends Alarm {
lightOn(): void;
lightOff(): void;
}
  • 继承: 子接口获得父接口的全部成员, 并追加自己的成员;
  • 实现约束: 满足子接口的对象必须同时满足父接口与子接口;