Eel*_*els 7 type-theory set-theory typescript
我对 Typescript 中的“交叉类型”这个名称有点困惑。
在集合论中,交集意味着只有两种类型共有的属性在两者的交集中才可用。
事实上,如果我在基元之间创建交集,这就是 Typescript 的行为方式。
type A = string | number
type B = number | boolean
type C = A & B
type D = string
type E = number
type F = D & B
Run Code Online (Sandbox Code Playgroud)
在这种情况下,TS 推断C为number和。Fnever
然而,当涉及到对象时,创建交集会创建一个新的类型/接口,它结合了所使用类型的属性 -
从文档中
TypeScript 提供了另一种称为交集类型的构造,主要用于组合现有的对象类型
当您以这种方式看待时,对象的行为就非常有意义了。而且使用&也有意义。
所以,我的问题是:
也许它与联合类型的解释有某种关系?
两个集合之间的交集将产生两个集合中的元素。
类型只是值集的描述。
那么对于原语的交集,集合和集合string & number中都有什么值,即。可以同时是 a和。答案是没有这样的价值。所以我们得到(空集)stringnumberstringnumbernever
对于对象类型,结果有点不同。对象类型描述了值必须至少具有该类型所描述的属性的集合。因此集合中的值{ name: string, onlyA: string[] }可以具有属性onlyB,但它们不需要具有它(例如)。
回到交集,该交集中的值必须同时满足和 的ObA & ObB描述。因此,该集合中的值将是来自也具有属性的值,并且来自该集合的值也具有属性。基本上满足两个集合描述的值,与基元不同,对于对象类型,我们可以通过创建具有两种类型属性的对象来构造这些值。ObAObBObAonlyBObBonlyA
我的tsconf 研讨会从您可能会感兴趣的“类型作为集合”部分开始。
| 归档时间: |
|
| 查看次数: |
971 次 |
| 最近记录: |