/** * A literal type that supports custom further strings but preserves autocompletion in IDEs. * * @see [copied from issue](https://github.com/microsoft/TypeScript/issues/29729#issuecomment-471566609) */ export type LiteralUnion = | Union | (Base & { zz_IGNORE_ME?: never }) type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never export type UnionToTuple = UnionToIntersection< T extends any ? () => T : never > extends () => infer R ? [...UnionToTuple>, R] : []