microgrok/lib/types.ts
2024-08-07 10:17:45 +02:00

13 lines
443 B
TypeScript

// deno-lint-ignore no-explicit-any
export type PairElts<A extends any[]> =
A extends [] ? [] :
A extends [infer _F] ? [] :
A extends [infer _F, infer S, ...infer R] ? [S, ...PairElts<R>] :
never;
export type StructOfArr<A extends string[], V> =
// deno-lint-ignore ban-types
A extends [] ? {} :
A extends [infer K extends string, ...infer R extends string[]] ? { [key in K]: V } & StructOfArr<R, V> :
never;