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

如何让TypeScript函数返回所有传入参数的联合类型?

解决TypeScript函数返回参数类型联合的类型标注问题

你的代码里泛型约束<T extends []>限制了T只能是空数组的子类型,这会导致无法正确捕获传入的多元素参数的类型。调整泛型约束和返回类型即可实现需求:

// 假设getRandomInt是已实现的获取随机整数的函数,示例实现如下:
const getRandomInt = (min: number, max: number) => Math.floor(Math.random() * (max - min)) + min;

const getRandomParameter = <T extends unknown[]>(...args: T): T[number] => {
  const randomIndex = getRandomInt(0, args.length);
  return args[randomIndex];
};

验证效果:

const randomParameter = getRandomParameter(1, false, 'a', 'b');
typeof randomParameter; // 类型推断为 1 | false | 'a' | 'b',符合预期

关键调整说明:

  • 将泛型约束从<T extends []>改为<T extends unknown[]>,让T可以匹配任意元素类型的数组/元组,从而正确捕获所有传入参数的类型信息。
  • 返回类型使用T[number],对于元组类型来说,number索引会返回元组中所有元素类型的联合类型,正好对应你需要的返回类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 10:20:43