我对Typescript中交叉类型的名称有些困惑。
在集合论中,交集意味着两种类型之间只有共同的属性才会在它们的交集中可用。
事实上,如果我在基本类型之间创建交集,Typescript就是这样行事的。
type A = string | number
type B = number | boolean
type C = A & B
type D = string
type E = number
type F = D & B
在这种情况下,TS 推断
C
为 number
,F
为 never
。
然而,当涉及到对象时,创建交集会创建一个新的类型/接口,结合了所使用类型的属性 -
从文档中可以得知:
TypeScript 提供了另一种称为交叉类型的结构,主要用于组合现有的对象类型
当您以这种方式查看对象的行为时,使用 &
也是有道理的。
那么,我的问题如下:
- 为什么对象和基本类型的行为看起来不同?
- 为什么选择了交叉的名称?
也许这与 联合类型 的解释有关?