Skip to content

Latest commit

 

History

History
33 lines (24 loc) · 1.21 KB

ReplaceAll.md

File metadata and controls

33 lines (24 loc) · 1.21 KB
标题 标签
ReplaceAll(字符串替换(替换所有)) string,extends,infer,recursively(字符串,继承,推断,递归)

字符串替换(替换所有)。

  • 泛型 S 继承字符串,匹配字符 F 与替换字符 T 同理,使用 infer 关键字推断模板字符串的两边,中间则是 F,匹配到则将中间的字符替换成 T,左边返回推断的字符 L,右边则递归的调用字符,以推断的字符 R 作为第一个参数,第二个参数和第三个参数与第一次调用不变,否则返回 S。

代码如下:

type ReplaceAll<
  S extends string,
  F extends string,
  T extends string
> = F extends ''
  ? S
  : S extends `${infer L}${F}${infer R}`
  ? `${L}${T}${ReplaceAll<R, F, T>}`
  : S;

使用方式:

type replacedAllStr = ReplaceAll<'t y p e s', ' ', ''>; // expected to be 'types'

应用场景

如下所示,鼠标悬浮到对应的类型变量可以查看类型。