相关疑难解决方法(0)

TypeScript的并集和交集类型的命名

我无法理解TypeScript中术语联合类型交集类型背后的逻辑.

从务实角度来说,如果不同类型的属性是套房产,如果我与他们结合&操作,产生的类型将成为联盟的那些套.遵循这个逻辑,我希望像这样的类型被称为联合类型.如果我将它们组合在一起|,我只能使用它们的共同属性,即集合的交集.

维基百科似乎支持这种逻辑:

任何给定非空集S的幂集(所有子集的集合)形成布尔代数,集合的代数,具有两个运算∨:=∪(并集)和∧:=∩(交集).

但是,根据typescriptlang.org,它恰恰相反:&用于生成交集类型|用于联合类型.

我确信还有另一种方式来看待它,但我无法弄明白.

boolean-logic set typescript

35
推荐指数
4
解决办法
1430
查看次数

为什么交集类型不是几种类型的交集?

根据交集的定义,几种类型的交集应该产生一个类型,该类型的属性对于所有类型来说都是公共的。例如,如果我们有:

type o1 = {a: string, b: string}
type o2 = {a: string, c: string}
type o3 = o1 & o2
Run Code Online (Sandbox Code Playgroud)

theno3应该是一个仅具有属性的类型,a因为是和a的公共属性。然而,我们实际上得到的是一个具有属性、和 的类型。在这种情况下,交集类型的行为似乎并不像其名称所显示的那样。它的作用更像是所有类型的组合。那么交叉口类型真的与交叉口有关吗?如果不是,为什么我们称其为交集类型而不是组合类型或其他名称?o1o2abc

typescript

5
推荐指数
0
解决办法
879
查看次数

为什么类型“从不”在联合类型中毫无意义?

打字稿游乐场

我在试图绕过这样一个事实时遇到了一些麻烦,即类型never毫无意义并且可以在它位于union type内时被丢弃。

我的意思是,我在一个交集类型中得到它,never将立即使所有结果都变成never,因为没有任何类型可以通过某种类型和never相同的类型。对于我,这说得通。

在此处输入图片说明

但是在联合类型中,我的直觉最初告诉我该never类型将是一个有效的选项。我的问题是为什么不是?为什么never可以在联合类型中丢弃?

在此处输入图片说明

有人可以对此做出合理的解释,以便我更好地理解它吗?

typescript typescript-typings union-types typescript-types

3
推荐指数
1
解决办法
713
查看次数