Replace the `camelCase` or `PascalCase` string with `kebab-case`. Learn TypeScript template literal types in this medium-level challenge on TypeScriptPro.
In this medium-level challenge, you'll replace the camelcase or pascalcase string with kebab-case.
Replace the camelCase or PascalCase string with kebab-case.
FooBarBaz -> foo-bar-baz
For example
type FooBarBaz = KebabCase<"FooBarBaz">
const foobarbaz: FooBarBaz = "foo-bar-baz"
type DoNothing = KebabCase<"do-nothing">
const doNothing: DoNothing = "do-nothing"Change the following code to make the test cases pass (no type check errors).
type KebabCase<S extends string> = S extends `${infer Letter}${infer Rest}`
? Rest extends Uncapitalize<Rest>
? `${Uncapitalize<Letter>}${KebabCase<Rest>}`
: `${Uncapitalize<Letter>}-${KebabCase<Rest>}`
: SHow it works:
S to be a string.infer to capture the first letter and the rest of the string.string consisting of the first letter (but uncapitalized) and the rest of the string recursively passed into KebabCase<S2>.string consisting of the first letter (but uncapitalized) and a hyphen (-) and the rest of the string recursively passed into KebabCase<S2>.This challenge helps you understand TypeScript's advanced type system and how to apply this concept in real-world scenarios.
This challenge is originally from here.
Be the first to access the course, unlock exclusive launch bonuses, and get special early-bird pricing before anyone else.
Only 27 Spots left
Get 1 month early access
Pre-Launch discount