UnionToIntersection type

Helper type to convert a union to an intersection.

export type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;