EndsWith

Challenge

Implement EndsWith<T, U> which takes two exact string types and returns whether T ends with U

For example:

type a = EndsWith<"abc", "bc">; // expected to be true
type b = EndsWith<"abc", "abc">; // expected to be true
type c = EndsWith<"abc", "d">; // expected to be false

Solution

Die Lösung dieses Problems ist es zu prüfen, ob die Zeichenkette U am Ende der Zeichenkette T steht. Dies kann einfach geprüft werden, indem man einen Template-String mit U am Ende und einer beliebigen Rest-Zeichenkette nutzt. Man kann es wie folgt ausdrucken: Erweitert T eine Zeichenkette, die mit U endet und neben U beliebige weitere Zeichen am Anfang der Zeichenkette besitzt?

type EndsWith<T extends string, U extends string> = T extends `${string}${U}`
  ? true
  : false;

References