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

如何在TypeScript中根据参数元组长度动态推断返回元组类型?

实现元组长度动态推断的拼接函数

要让TypeScript准确推断拼接后元组的具体类型(包括长度和元素类型),需要修改函数的泛型定义,针对具体元组类型而非宽泛的数组类型进行约束和推断:

修改后的代码

function concatTuples<First extends readonly any[], Second extends readonly any[]>(
  first: First,
  second: Second
): [...First, ...Second] {
  return [...first, ...second] as [...First, ...Second];
}

const result = concatTuples([0, 1], [2, 3]);
// result 的类型会被推断为 [number, number, number, number]

关键改动说明

  • 用两个独立泛型First和Second分别约束两个输入元组,extends readonly any[]确保它们是元组/只读数组类型
  • 返回类型直接使用元组展开语法[...First, ...Second],TypeScript会自动将两个输入元组的类型合并为一个新的具体元组类型
  • 传入固定长度的字面量时,函数的泛型约束会触发TypeScript将其推断为元组类型,而非普通数组

扩展验证

如果传入不同长度或不同元素类型的元组,也能正确推断结果类型:

const mixedResult = concatTuples([1, "a"], [true, null]);
// mixedResult 类型为 [number, string, boolean, null]

内容的提问来源于stack exchange,提问作者Jakub Kvba

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 08:03:34