| export namespace enumUtil { |
| type UnionToIntersectionFn<T> = (T extends unknown ? (k: () => T) => void : never) extends ( |
| k: infer Intersection |
| ) => void |
| ? Intersection |
| : never; |
| |
| type GetUnionLast<T> = UnionToIntersectionFn<T> extends () => infer Last ? Last : never; |
| |
| type UnionToTuple<T, Tuple extends unknown[] = []> = [T] extends [never] |
| ? Tuple |
| : UnionToTuple<Exclude<T, GetUnionLast<T>>, [GetUnionLast<T>, ...Tuple]>; |
| |
| type CastToStringTuple<T> = T extends [string, ...string[]] ? T : never; |
| |
| export type UnionToTupleString<T> = CastToStringTuple<UnionToTuple<T>>; |
| } |