# 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']

# 知识点

  1. 递归嵌套,中间参数的传递
  2. 字符遍历: A extends `${string}${infer R}`
  3. 用元组记录长度
Last Updated: 2023/5/16 06:00:28