Dev Build / cleanup (push) Canceled after 0s
Dev Build / typecheck (push) Canceled after 0s
Dev Build / build (linux-arm64, ubuntu-24.04-arm, linux-arm64) (push) Canceled after 0s
Dev Build / build (linux-x64, ubuntu-latest, linux-x64) (push) Canceled after 0s
Dev Build / build (win-x64, windows-latest, win32-x64) (push) Canceled after 0s
Dev Build / dispatch-dev-docker (push) Canceled after 0s
18 lines
604 B
Plaintext
18 lines
604 B
Plaintext
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>>;
|
|
}
|