Endswith

挑战

实现EndsWith<T, U>,接收两个 string 类型参数,然后判断T是否以U结尾,根据结果返回truefalse

例如:

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

解答

这道题可以使用条件类型和模板字符串类型来解决。

模板字面量类型允许我们进行类型推断,我们可以将字符串拆分成两部分,然后使用条件类型判断第二部分是否等于U即可。

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