TypeScript 类型兼容性是指判断一个类型是否可以被另一个类型替代,换句话说,就是一个类型的值是否可以赋值给另一个类型的变量。TypeScript 使用结构化类型系统(也称为鸭子类型或子结构类型),基于成员的实际结构而不是名称来判断类型兼容性。
1. 基本规则
在 TypeScript 中,一个类型 S
可以赋值给另一个类型 T
,当且仅当 T
兼容 S
。类型兼容性主要取决于两个方面:
- 结构兼容性:即一个类型的属性集合是否是另一个类型属性集合的子集。
- 可分配性:即一个类型的值是否可以赋值给另一个类型。
2. 接口兼容性
当判断两个接口类型的兼容性时,TypeScript 会检查一个接口的属性是否可以包含在另一个接口中。
interface Person {
name: string;
age: number;
}
interface Employee {
name: string;
age: number;
position: string;
}
let p: Person;
let e: Employee =