Union to Intersection

Challenge

Implement the advanced util type UnionToIntersection<U>

For example

type I = Union2Intersection<"foo" | 42 | true>; // expected to be 'foo' & 42 & true

Solution

References