Capitalize

Challenge

Implement Capitalize<T> which converts the first letter of a string to uppercase and leave the rest as-is.

For example

type capitalized = Capitalize<"hello world">; // expected to be 'Hello world'

Solution

Zur Lösung dieses Problems müssen wir einfach mittels Template literal types das erste Zeichen als Typ-Variable extrahieren, in dem wir das klassische Konstrukt aus einem konditionellen Typen mit infer nutzen. Um einen Buchstaben großzuschreiben, können wir den eingebauten Typ Capitalize nutzen.

type MyCapitalize<S extends string> = S extends `${infer Head}${infer Tail}`
  ? `${Capitalize<Head>}${Tail}`
  : S;

References