472 - Tuple to Enum Object
Opened this issue · 0 comments
koSakano commented
type FindIndex<T extends readonly any[], I, R extends any[] = []> =
T extends readonly [infer A, ...infer B] ? [A] extends [I] ? R["length"] : FindIndex<B, I, [...R, any]> : -1;
type Enum<T extends readonly string[], N extends boolean = false> = {
readonly [k in T[number]as `${Capitalize<k>}`]: N extends false ? k : FindIndex<T, k>;
}