sevcsik sevcsik - 3 months ago 17
TypeScript Question

Naming of Typescript's union and intersection types

I can't understand the logic behind the terms union types and intersection types in TypeScript.

Pragmatically, if the properties of different types are sets of properties, if I combine them with the

&
operator, the resulting type will be the union of the of those sets. Following that logic, I would expect types like this to be called union types. If I combine them with
|
, I can only use the common properties of them, the intersection of the sets.

Wikipedia seems to back that logic:


The power set (set of all subsets) of any given nonempty set S forms a Boolean algebra, an algebra of sets, with the two operations ∨ := ∪ (union) and ∧ := ∩ (intersection).


However, according to typescriptlang.org, it's exactly the oppopsite:
&
is used to produce intersection types and
|
is used for union types.

I'm sure there is another way of looking at it, but I cannot figure it out.

Answer

The type A | B refers to objects which are either A or B. In other words, values of such type are drawn from the union of values for A and values for B.

The type A & B refers to objects which are both A and B. In other words, values of such type are drawn from the intersection of values for A and values for B.

The naming and semantics are identical in other languages such as C++.

Comments