Skip to main content

106 - 去除左侧空白

Answer TestCases

实现 TrimLeft<T> ,它接收确定的字符串类型并返回一个新的字符串,其中新返回的字符串删除了原字符串开头的空白字符串。

例如

type trimed = TrimLeft<'  Hello World  '> // 应推导出 'Hello World  '

Solution

type TrimLeft<S extends string> = S extends `${' ' | '\n' | '\t'}${infer R}`
? TrimLeft<R>
: S

判断字符串类型是否有一个空白字符,存在则进行递归

对于字符串 \t foo, 期望得到 foo, 递归过程如下

'\t foo' extends `${' ' | '\n' | '\t'}${infer R}` ? TrimLeft<R>: S

得到 R' foo', 继续递归

' foo' extends `${' ' | '\n' | '\t'}${infer R}` ? TrimLeft<R>: S

得到 R'foo', 继续递归, 得到最终 'foo'