去除两端空白字符
题目
实现Trim<T>
,它接受一个明确的字符串类型,并返回一个新字符串,其中两端的空白符都已被删除。
例如
ts
type trimed = Trim<" Hello World ">; // expected to be 'Hello World'
解答
同 去除左侧空白,去除两端空白字符,可以先递归去除左边再递归去除右边。
ts
type Space = " " | "\n" | "\t";
type Trim<S extends string> = S extends `${Space}${infer R}`
? Trim<R>
: S extends `${infer L}${Space}`
? Trim<L>
: S;
精选
使用联合类型,合并 “去除左边空白” 和 “去除右边字符”:
tstype Space = ' ' | '\t' | '\n'; type Trim<S extends string> = S extends `${Space}${infer T}` | `${infer T}${Space}` ? Trim<T> : S;