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

为何TypeScript不对含不同类型元素的泛型数组参数报错?

为什么这段TypeScript代码未报错?

先看你的代码示例:

function print<G>(params: G[]): G {
 return params[0];
}

console.log(print(["1",false,"2",5]))

原因在于TypeScript的类型推断与联合类型机制:

  • 当传入包含字符串、布尔值、数字的混合数组时,TypeScript会自动将数组元素类型推断为这些类型的联合类型——string | boolean | number。
  • 泛型G会被推导为这个联合类型,此时函数参数params的类型是(string | boolean | number)[],返回值类型是string | boolean | number。
  • 返回的params[0]是字符串"1",属于上述联合类型的一员,完全符合返回值的类型要求,因此TypeScript不会报错。

如果想要让TypeScript对混合类型数组报错,可以显式指定泛型类型,比如强制G为string:

console.log(print<string>(["1",false,"2",5])) // 此时会报错,因为false和5不属于string类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:07:13