operator different typescript set boolean-logic

different - typescript operator !=



Nombramiento de los tipos de unión e intersección de TypeScript (2)

Aquí hay otra manera de pensar en ello. Considera cuatro series: cosas rojas, cosas azules, cosas grandes y cosas pequeñas.

Si intersectas el conjunto de todas las cosas rojas y todas las pequeñas, terminas con la unión de las propiedades: todo en el conjunto tiene la propiedad roja y la pequeña.

Pero si tomaste la unión de pequeñas cosas rojas y pequeñas azules , solo la propiedad de la pequeñez es universal en el conjunto resultante. La intersección de "rojo pequeño" con "azul pequeño" produce "pequeño".

En otras palabras, tomar la unión del dominio de valores produce un conjunto de propiedades intersecado y viceversa.

No puedo entender la lógica detrás de los términos tipos de unión y tipos de intersección en TypeScript.

Pragmáticamente, si las propiedades de diferentes tipos son conjuntos de propiedades, si las combino con el operador & , el tipo resultante será la unión de esos conjuntos. Siguiendo esa lógica, esperaría que tipos como este se llamaran tipos de unión . Si los combino con | Solo puedo usar las propiedades comunes de ellos, la intersección de los conjuntos.

Wikipedia parece respaldar esa lógica:

El conjunto de potencias (conjunto de todos los subconjuntos) de cualquier conjunto S no vacío dado forma un álgebra booleana, un álgebra de conjuntos, con las dos operaciones ∨: = ∪ (unión) y ∧: = ∩ (intersección).

Sin embargo, de acuerdo con typescriptlang.org , es exactamente lo contrario: & se usa para producir tipos de intersección y | Se utiliza para los tipos de unión .

Estoy seguro de que hay otra forma de verlo, pero no puedo entenderlo.


El tipo A | B A | B refiere a objetos que son A o B En otras palabras, los valores de este tipo se extraen de la unión de valores para A y valores para B

El tipo A & B refiere a objetos que son tanto A como B En otras palabras, los valores de este tipo se dibujan a partir de la intersección de valores para A y valores para B

La denominación y la semántica son idénticas en otros idiomas, como C ++.