为什么打字稿不允许检查两个通用变量的相等性?

时间:2019-02-20 10:33:58

标签: typescript

function f1<T, U>(x: T, y: U) {
  return x === y
}

为什么打字稿会抱怨?我不确定我是否完全理解编译错误消息的含义。

编译错误:

  

TS2367:由于类型“ T”和“ U”没有重叠,因此此条件将始终返回“ false”。

1 个答案:

答案 0 :(得分:2)

答案在消息本身中。在您的情况下,T和U没有重叠,因为它们代表两种不同的类型。 TypeScript的目的是帮助您预防这种情况。

因此,如果您告诉编译器y可能是x,则它将起作用。喜欢

function f1<T, U>(x: T, y: U | T) {
    return x === y;
}


function f1<T, U extends T>(x: T, y: U) {
    return x === y;
}