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

问题描述 投票:33回答:2

我不理解TypeScript中术语联合类型交叉点类型背后的逻辑。

实用上,如果不同类型的属性是属性集,那么如果我将它们与&运算符结合使用,则结果类型将是这些集合中的union。按照这种逻辑,我希望这样的类型称为union types。如果将它们与|结合使用,则只能使用它们的公共属性,即集合的intersection

Wikipedia似乎支持该逻辑:

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

但是,根据typescriptlang.org,恰恰相反:&用于产生交集类型|用于工会类型

我确定还有另一种查看方式,但是我无法弄清楚。

typescript set boolean-logic
2个回答
13
投票

这是另一种思考方式。考虑四组:红色事物,蓝色事物,大事物和小事物。

如果您intersect所有红色事物和所有小事物的集合,则最终得到属性的[[union-集合中的所有事物都具有red属性和small属性。] >但是如果您使用

红色小物件

蓝色小物件工会,则只有smallness属性在结果集中是通用的。 相交“红色小”与“蓝色小”产生“小”。换句话说,取值域的并集会产生一组相交的属性,反之亦然。

以图像形式:enter image description here


9
投票
类型A | B指的是

任一个

© www.soinside.com 2019 - 2024. All rights reserved.