typescript - 为什么打字稿不允许检查两个通用变量的相等性?
问题描述
function f1<T, U>(x: T, y: U) {
return x === y
}
为什么 Typescript 会抱怨?我不确定我是否完全理解编译错误消息的含义。
编译错误:
TS2367:此条件将始终返回 'false',因为类型 'T' 和 'U' 没有重叠。
解决方案
答案就在消息本身。在您的情况下, 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;
}
推荐阅读
- javascript - 为谷歌扩展做一个开/关开关
- c# - 通过“ms-appx:///”引用图像在 Uri 中不起作用
- reactjs - 如何将 react-router-link 添加到使用 forEach 方法创建的 mapbox 标记中
- flutter - Flutter/Dart 运行时类型的冻结对象
- c# - LibVlcSharp 之谜:Visual Studio 在 Debug>Start Debugging 上删除 libvlc.dll 文件
- amazon-web-services - 更新 github 分支时使用 Circleci 更新 aws 中的源代码
- flutter - Flutter webrtc 无法在 onTrack 回调中获取 MediaStream
- swift - 读取并比较CKRecord的值?
- php - 如何在 Symfony 中对从字符串创建的类使用自动装配?
- assembly - 是否可以在 NASM 中定义浮点常量(`equ`)?