Trim
Challenge
Implement Trim<T> which takes an exact string type and returns a new string with the whitespace from both ends removed.
For example
type trimmed = Trim<" Hello World ">; // expected to be 'Hello World'
Solution
Die Lösung des Problems ähnelt der Medium Trim Left-Aufgabe. Auch hier werden rekursiv so lange ungültige Zeichen entfernt, bis links und rechts keine mehr vorhanden sind.
// Definieren eines Typen der die verschiedenen Typen von Leerzeichen als Vereinigung erfasst.
type Whitespace = " " | "\n" | "\t";
// Rekursiv den Typen aufrufen, bis keine Leerzeichen mehr existieren. Das Muster wird infert.
type Trim<S extends string> = S extends
| `${Whitespace}${infer Text}`
| `${infer Text}${Whitespace}`
? Trim<Text>
: S;