首页 > 解决方案 > 为什么打字稿不允许检查两个通用变量的相等性?

问题描述

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

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

编译错误:

TS2367:此条件将始终返回 'false',因为类型 'T' 和 'U' 没有重叠。

标签: typescript

解决方案


答案就在消息本身。在您的情况下, 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;
}

推荐阅读