Skip to content

Instantly share code, notes, and snippets.

@vannio
Created April 14, 2023 10:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vannio/73eb287729d27d2176bcbf9e69831030 to your computer and use it in GitHub Desktop.
Save vannio/73eb287729d27d2176bcbf9e69831030 to your computer and use it in GitHub Desktop.
type CamelizeString<T extends PropertyKey> = T extends string
? string extends T
? string
: T extends `${infer F}_${infer R}`
? `${F}${Capitalize<CamelizeString<R>>}`
: string extends T
? string
: T extends `${infer F}-${infer R}`
? `${F}${Capitalize<CamelizeString<R>>}`
: T
: T;
type Camelize<T> = { [K in keyof T as CamelizeString<K>]: T[K] };
type Camelized = Camelize<{'kebab-case': string, 'snake_case': string}
@vannio
Copy link
Author

vannio commented Apr 14, 2023

Screenshot 2023-04-14 at 11 17 41

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment