# 298-计算字符的长度
# 题目描述
计算字符串的长度,类似于 String#length
。
# 分析
在 ts 中,元组的长度可以直接使用 T['length']
获取,字符并没有这样的方法,但是可以通过遍历字符,来将其转换成元组即可通过 length 索引进行访问。字符的遍历 在 实现 TrimLeft 中提到过。不再赘述
# 题解
type LengthOfString<
S extends string,
Arr extends any[] = [],
> = S extends `${string}${infer R}`
? LengthOfString<R, [...Arr, 1]>
: Arr['length'];
这里通过递归遍历整个字符,当剩余字符长度为 0 时,返回遍历的字符的长度。这里由于正常遍历时,是感知不到整个字符的元组的,所以通过 Arr 参数将遍历过的元素存起来,以便在递归结束时进行返回 Arr['length']
# 知识点
- 递归嵌套,中间参数的传递
- 字符遍历:
A extends `${string}${infer R}`
- 用元组记录长度