Replace
题目
实现 Replace<S, From, To>
将字符串 S
中的第一个子字符串 From
替换为 To
。
例如
ts
type replaced = Replace<"types are fun!", "fun", "awesome">; // 期望是 'types are awesome!'
解答
参考 Capitalize,如果字符串中间添加某些推导条件(字符串值类型,可以看成常量),那则会按照推导条件进行字符串的分割:
ts
S extends `${infer Left}${From}${infer Right}`
将 From
替换为 To
即可:
ts
type Replace<
S extends string,
From extends string,
To extends string
> = S extends `${infer Left}${From}${infer Right}`
? From extends ""
? S
: `${Left}${To}${Right}`
: S;