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

TypeScript泛型报错:Operator '+'无法应用于类型'T'和'T'原因解析

TypeScript泛型函数报错原因解析

先看报错的无约束泛型代码:

function add<T>(a: T, b: T): T {
    return a + b;
}

核心报错原因

  • 无约束的泛型T可以指代任意类型,比如对象、布尔值、自定义类实例这些都能作为T传入。
  • 不是所有类型都支持+运算符:比如传两个对象进去,a + b完全是非法操作。
  • TypeScript的类型检查器无法提前确定T的具体类型,所以会判定a + b这个操作存在类型安全风险,直接抛出错误。

再看正常运行的带约束泛型代码:

function greet<T extends number>(a: T, b: T): number {
    return (a + b);
}

为什么这段能正常运行

  • T extends number给泛型加了类型约束,限定T只能是number类型或者它的子类型(比如5这种数字字面量)。
  • TypeScript明确知道a和b都是数字类型,而数字原生支持+运算,所以类型检查器不会再报错。
  • 返回值设为number也完全合理,两个数字相加的结果必然是数字,和T的约束完全兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 08:49:58