VVLL.net

Type Compatibility(类型兼容性)

日期:2024-08-22 09:58:31

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 =