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

如何用TypeScript实现基于数值变量动态定义数组长度的类型?

基于数值变量定义数组类型长度的实现方案

在TypeScript中,可以通过字面量类型、泛型结合递归条件类型实现基于数值变量定义固定长度的数组类型,具体方案如下:

核心实现代码

type StringArray<N extends number, T extends string[] = []> = 
  T['length'] extends N ? T : StringArray<N, [...T, string]>;

function func<N extends number>(n: N): StringArray<N> {
  return Array(n).fill('') as StringArray<N>;
}

效果验证

  • 调用 func(1),类型推导为 [string]
  • 调用 func(2),类型推导为 [string, string]
  • 调用 func(5),类型推导为 [string, string, string, string, string]

关键说明

  • 依赖递归条件类型:不断向数组类型中追加string元素,直到数组长度匹配传入的数值字面量N
  • 泛型N需为字面量数值类型,TypeScript才能精确推导数组长度;若传入动态变量,类型会退化为普通string[]

内容的提问来源于stack exchange,提问作者Tomasz Mularczyk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:25:26