解决 TS 问题的最好办法就是多练,这次解读 type-challenges Medium 难度 57~62 题。
精读
Trim Right
实现 TrimRight 删除右侧空格:
type Trimed = TrimRight<' Hello World '> // expected to be ' Hello World'
用 infer 找出空格前的字符串递归一下即可:
type TrimRight<S extends string> = S extends `${infer R}${' '}`
? TrimRight<R>
: S
再补上测试用例的边界情况,\n 与 \t 后就是完整答案了:
// 本题答案
type TrimRight<S extends string> = S extends `${infer R}${' ' | '\n' | '\t'}`
? TrimRight<R>
: S
Without
实现 Without<T, U>,从数组 T 中移除 U 中元素:
type Res = Without<[1, 2], 1> // expected to be [2]
type Res1 = Without<[1, 2, 4, 1, 5], [1, 2]> // expected to be [4, 5]
type Res2 = Without<[2, 3, 2, 3, 2, 3

本文详细解读了TypeScript中的几个中级挑战,包括TrimRight删除字符串右侧空格、Without从数组中移除指定元素、Trunc实现数值截断、IndexOf寻找元素下标、Join数组连接以及LastIndexOf查找最后一个匹配下标。每个挑战都提供了实现思路和关键代码,帮助读者深入理解TypeScript的类型系统和递归操作。
最低0.47元/天 解锁文章
7345

被折叠的 条评论
为什么被折叠?



