Implement `EndsWith<T, U>` which takes two exact string types and returns whether `T` ends with `U` Master advanced TypeScript type manipulation in this medium-level challenge on TypeScriptPro.
In this medium-level challenge, you'll implement EndsWith<T, U> which checks whether the string type T ends with the substring U, returning true or false.
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 falseChange the following code to make the test cases pass (no type check errors).
type cases = [
Expect<Equal<EndsWith<'abc', 'bc'>, true>>,
Expect<Equal<EndsWith<'abc', 'abc'>, true>>,
Expect<Equal<EndsWith<'abc', 'd'>, false>>,
Expect<Equal<EndsWith<'abc', 'ac'>, false>>,
Expect<Equal<EndsWith<'abc', ''>, true>>,
Expect<Equal<EndsWith<'abc', ' '>, false>>,
]
Unlock 102+ medium, hard, and extreme challenges to master advanced TypeScript.
One-time payment. Lifetime access.
[object Object]How it works:
T and U are constrained to string types with extends stringT extends `${string}${U}` uses a template literal type to check if T matches any string followed by U at the end${string} wildcard matches zero or more characters at the beginning, so we only care that U appears at the very end of Ttrue; otherwise falseU ('') always matches since ${string}${''} matches any string, while a space ' ' only matches strings that actually end with a spaceThis challenge helps you understand TypeScript's template literal types and pattern matching for string validation, and how to apply this concept in real-world scenarios.
This challenge is originally from here.