Implement the advanced util type UnionToIntersection<U>
UnionToIntersection<U>
For example
type I = UnionToIntersection<'foo' | 42 | true> // expected to be 'foo' & 42 & true