koSakano/type-challenges

1383 - Camelize

Opened this issue · 0 comments

type CamelCase<T> = T extends `${infer First}_${infer Word}${infer Rest}` ? `${Lowercase<First>}${Uppercase<Word>}${CamelCase<Rest>}` : T;

type Camelize<T> = { [k in keyof T as CamelCase<k>]: T[k] extends [infer U] ? [Camelize<U>] : T[k] extends object ? Camelize<T[k]> : T[k]};