接口
接口如何声明对象形状?
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;
}
- 继承: 子接口获得父接口的全部成员, 并追加自己的成员;
- 实现约束: 满足子接口的对象必须同时满足父接口与子接口;