Skip to content

Latest commit

 

History

History
31 lines (22 loc) · 1.09 KB

LengthOfString.md

File metadata and controls

31 lines (22 loc) · 1.09 KB
标题 标签
LengthOfString(字符串长度) extends,string,recursively(继承,字符串,递归)

字符串长度。

  • 类型有 2 个参数,第一个参数表示泛型 S,继承字符串类型,第二个参数是一个字符串数组,存储第一个参数的字符串中的所有字符,默认是空数组。
  • 递归的用 infer 关键字推断字符串 S,是否继承模板字符串,然后将第二个参数数组填充满,最后返回数组的 length 属性即可得到字符串的长度。

代码如下:

type LengthOfString<
  S extends string,
  T extends string[] = []
> = S extends `${infer F}${infer R}`
  ? LengthOfString<R, [...T, F]>
  : T['length'];

使用方式:

type LengthOfStringStr = LengthOfString<'str'>; // 3

应用场景

如下所示,鼠标悬浮到对应的类型变量可以查看类型。