gpt4 book ai didi

javascript - typescript 泛型 : types 'T' and 'number' have no overlap error

转载 作者:行者123 更新时间:2023-12-01 15:23:13 26 4
gpt4 key购买 nike

考虑这个例子:

function foo<T>(t: T): boolean {
return t === 1;
}
我得到 This condition will always return 'false' since the types 'T' and 'number' have no overlap. .
如果我将其更改为:
function foo<T extends any>(t: T): boolean {
return t === 1;
}
我以为 T可能是 any默认情况下,我为什么需要 extends any ?没有 extends any , TS 期待什么类型 T成为?
编辑,实际功能:
function cleanObj<T>(
obj: ObjectOf<T>,
): ObjectOf<T> {
const newObj = {};
for (const k of Object.keys(obj)) {
if (obj[k] !== null && typeof obj[k] !== 'undefined' && obj[k] !== false) {
newObj[k] = obj[k];
}
}

return newObj;
}

最佳答案

三等号运算符 ===如果两个操作数的类型相同,则返回 true 包含相同的值。与之相比"1" == 1将返回 true。
由于您使用 ===您还比较了类型,即 number右手操作者1 .但是,你的 T 不能只是一个数字,这就是编译器给你这个通知的原因。
可能的解决方案:

  • 如果没有必要,删除泛型
  • 使用 ==而不是 ===
  • (可能的进一步方法取决于您的实际代码)
  • 关于javascript - typescript 泛型 : types 'T' and 'number' have no overlap error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63788491/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com