add snake-case

main
Kimi Löffel 3 years ago
parent e4a2801c98
commit 0a7205cd60

@ -0,0 +1,19 @@
import type { Equal, Expect } from '@type-challenges/utils'
type cases = [
Expect<Equal<SnakeCase<'hello'>, 'hello'>>,
Expect<Equal<SnakeCase<'userName'>, 'user_name'>>,
Expect<Equal<SnakeCase<'getElementById'>, 'get_element_by_id'>>,
Expect<Equal<SnakeCase<'getElementById' | 'getElementByClassNames'>, 'get_element_by_id' | 'get_element_by_class_names'>>,
]
type SnakeCase<
T extends string,
Acc extends string = '',
> =
T extends `${infer Head}${infer Tail}`
? Head extends Lowercase<Head>
? SnakeCase<Tail, `${Acc}${Head}`>
: SnakeCase<Tail, `${Acc}_${Lowercase<Head>}`>
: Acc
;
Loading…
Cancel
Save