You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用TypeScript类型获取字符串的长度?

实现TypeScript字符串长度数字类型

要实现LengthOfString来获取字符串字面量的数字类型长度,核心思路是利用TypeScript的递归条件类型和模板字符串推断,通过辅助数组累计字符数量:

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

测试用例

type Length = LengthOfString<"hello">; // 类型为5
type EmptyStrLength = LengthOfString<"">; // 类型为0
type LongStrLength = LengthOfString<"typescript type system">; // 类型为20

实现逻辑拆解

  1. 泛型参数定义:S约束为字符串字面量,T是辅助数组(默认空数组),用来记录已遍历的字符个数。
  2. 字符串拆分:通过${infer First}${infer Rest}模板字符串推断,把输入字符串拆分成第一个字符First和剩余字符串Rest。
  3. 递归计数:如果能拆分出字符,就递归调用LengthOfString,传入剩余字符串,并把当前字符加入辅助数组(数组长度+1)。
  4. 终止条件:当字符串被拆分为空时,辅助数组的length属性就是原字符串的长度,直接返回这个数字类型。

注意事项

  • 这个实现依赖TypeScript 4.0及以上版本的特性(模板字符串推断、递归条件类型)。
  • TypeScript对递归类型的深度有默认限制(约1000层),超长字符串会触发类型错误,普通场景下这个实现足够覆盖需求。

内容的提问来源于stack exchange,提问作者Tristan F.-R.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 16:37:45