Open yunliuyan opened 11 months ago
infer 大法好
type Replace<S extends string, From extends string, To extends string> = S extends `${infer L}${From}${infer R}` ? `${L}${To}${R}` : never;
type replaced = Replace<'types are fun!', 'fun', 'awesome'> // 期望是 'types are awesome!'
type Replace<S extends string, From extends string, To extends string> = S extends `${infer U}${From}${infer R}` ? `${U}${To}${R}` : S;
type replaced = Replace<'types are fun!', 'fun', 'awesome'>;
type Replace<T extends string, U extends string, P extends string> = T extends `${infer t}${U}${infer r}` ? `${t}${P}${r}` : never;
type replaced = Replace<'types are fun!', 'fun', 'awesome'> // 期望是 'types are awesome!'
type MyReplace<S extends string, From extends string, To extends string> = S extends `${infer L}${From}${infer R}` ? `${L}${To}${R}` : never;
type replaced = MyReplace<'types are fun!', 'fun', 'awesome'> // 期望是 'types are awesome!'
Replace
![#template-literal](https://img.shields.io/badge/-%23template--literal-999)
实现
Replace<S, From, To>
将字符串S
中的第一个子字符串From
替换为To
。例如