计算字符串的长度
题目
计算字符串的长度,类似于 String#length
。
题目来源:https://tsch.js.org/298/zh-CN
解答
type LengthOfString<S extends string, T extends any[] = []> = S extends `${infer L}${infer R}` ?
LengthOfString<R, [...T, L]>
:
T['length'];
解题的关键点有两个:
- 增加参数
T
,默认是空数组,用于存放读取的字符,方便使用数组的length
属性,得到长度 - 使用递归,逐个拆解字符串
S extends `${infer L}${infer R}`
对字符串进行拆解
如果当前的字符串已拆解完,则读取存放数组T
的长度。
如果没有拆解完,则递归调用LengthOfString<R, [...T, L]>
,并将取出的字符,放入T
中。