Skip to main content

计算字符串的长度

题目

计算字符串的长度,类似于 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中。