Convert a TypeScript Union of Types (something | somethingElse
) to an Intersection of Types (something & somethingElse
).
// See "MergO" from https://github.com/microsoft/TypeScript/issues/26058#issuecomment-553212998
export type UnionToIntersection<U extends object> =
(U extends object ? (k: U) => void : never) extends (k: infer T) => void
? (T extends object ? T : object)
: object