TypeScript 类型系统深度解析
1. TypeScript 术语与集合论术语的对应关系
TypeScript 中的类型可以与集合论中的概念相对应,这种对应关系有助于我们更好地理解 TypeScript 的类型系统。以下是一些常见的对应关系:
| TypeScript 术语 | 集合论术语 |
| — | — |
| never | ∅ (空集) |
| 字面量类型 | 单元素集合 |
| 可赋值给 T 的值 | 值 ∈ T (属于) |
| T1 可赋值给 T2 | T1 ⊆ T2 (子集) |
| T1 扩展 T2 | T1 ⊆ T2 (子集) |
| T1 | T2 | T1 ∪ T2 (并集) |
| T1 & T2 | T1 ∩ T2 (交集) |
| unknown | 全集 |
记住以下几点有助于我们更好地理解 TypeScript 类型:
- 把类型看作值的集合(类型的定义域),这些集合可以是有限的(如布尔类型或字面量类型),也可以是无限的(如数字或字符串类型)。
- TypeScript 类型形成的是相交集合(维恩图),而不是严格的层次结构。两个类型可以重叠,而不一定是彼此的子类型。
- 即使对象具有类型声明中未提及的额外属性,它仍然可以属于该类型。
- 类型操作应用于集合的定义域。A 和 B 的交集是 A 的定义域和 B 的定义域的交集。对于对象类型,这意味着 A & B 中的值具有 A 和 B 的属性。
- 把 “扩展”、“可赋值给” 和 “子类型” 视为 “子集” 的同义词。
超级会员免费看
订阅专栏 解锁全文
339

被折叠的 条评论
为什么被折叠?



