关键词: TypeScript, TypeChallenge
实现Replace<S, From, To>
类, 该类接受三个字符串类型, 将S
串中的From
修改为To
并返回
举个栗子:
type replaced = Replace<"types are fun!", "fun", "awesome">; // expected to be 'types are awesome!'
type Replace<S, F extends string, T extends string> = S extends `${infer L}${F}${infer R}`
? `${L}${T}${R}`
: S;
我们将S
拆分成 左, 匹配, 右 三个部分, 并返回 左, 替换, 右 的拼接即可
通过模板字面量+infer
的语法, 我们可以很轻松的实现
// 注意`F extends string, T extends string`中 `extends string`是必须的, 否则无法在模板中使用
type Replace<S, F extends string, T extends string> = S extends `${infer L}${F}${infer R}`
? `${L}${T}${R}`
: S;