Trim Right
问题描述
实现 TrimRight<T>
,它接收确定的字符串类型并返回一个新的字符串,其中新返回的字符串删除了原字符串结尾的空白字符串。
例如
type Trimed = TrimRight<' Hello World '> // 应推导出 ' Hello World'
// ============= Test Cases =============
import type { Equal, Expect } from './test-utils'
type cases = [
Expect<Equal<TrimRight<'str'>, 'str'>>,
Expect<Equal<TrimRight<'str '>, 'str'>>,
Expect<Equal<TrimRight<'str '>, 'str'>>,
Expect<Equal<TrimRight<' str '>, ' str'>>,
Expect<Equal<TrimRight<' foo bar \n\t '>, ' foo bar'>>,
Expect<Equal<TrimRight<''>, ''>>,
Expect<Equal<TrimRight<'\n\t '>, ''>>,
]
// ============= Your Code Here =============
type Space= ' ' | '\n' | '\t'
type TrimRight<S extends string> = S extends `${infer L}${Space}`? TrimRight<L>: S
简单题我重拳出击,判断最右边的字符串是否是 Space
类型即可,如果是,则将左边的内容继续递归判断,最后返回。