我有代码,我应该多次检查复杂的条件。 F.E:nil
等。我尝试在我的条件下添加变量,例如 AVCapturePhoto
,但我遇到了无法解决的 TS 问题。
示例作品:
(a && b) || c
不起作用:
const hasSomething = (a && b) || c
是否有任何解决方法可以在没有非空断言 function add(a?: number, b?: number): number {
if (a && b) {
return a + b;
}
return 0;
}
的情况下修复它?
答案 0 :(得分:1)
易于修复:D。只需将 TypeScript 的版本更新为 4.4:
function add(a?: number, b?: number): number {
const hasNumbers = a && b;
if (hasNumbers) {
return a + b;
}
return 0;
}
答案 1 :(得分:1)
带有数字的 && (and) 运算符无法按预期工作:
如果你这样使用它:
const foo = 3 && 4
您可以看到 typeof foo
是 "number"
。
实际上 && 运算符返回:
如果结果为真,最后一个数字,例如:5 && 4
是 true
所以它会返回 4
假值只有一个:例如 0 && 4
有 0
作为假值,将返回 0
,与 undefined && 4
相同,这将返回 {{ 1}}
低于 undefined
的 TypeScript 版本将无法真正理解哪个是真正的结果,因为它可能是 4.4.0
AFAIK。
当两个值中的至少一个可以是 undefined
时,使用 number && number
也是一种不好的做法,因为 0
是一个假值,并且在您的函数中任何根据 0
检查,其中包含 0 的 sum 将导致 0
响应。
我建议您只将函数参数设为强制性,以避免错误并避免 a && b
检查:
hasNumbers