![](/img/trans.png)
[英]Why is TypeScript showing “Cannot invoke an object which is possibly 'undefined'.ts(2722)” error after optional chaining operator?
[英]Why does typescript throw an error on an number | undefined comparison, even after using optional chaining?
下面是我的代码块,如果说 Object 可能是未定义的,那么 typescript 将在第二个抛出错误,在这种情况下,不应该 typescript 只是假设a is undefined
错误时抛出错误?
const condition = true; // can be a condition that could be either true or false
const a: Array<number> | undefined;
if(condition) {
a = [1,2,3,4,5];
}
if(a?.length > 0){
// Have some code
}
或者我们正在尝试对一个数字进行undefined > 0
undefined 比较,这就是它引发错误的原因?
或者我们正在尝试对一个数字进行 undefined > 0 undefined 比较,这就是它引发错误的原因?
就是这样。 有关导致完全相同错误的另一个示例,请参见:
const undef = void 0;
if (undef > 0) {
// Have some code
}
与您的Array<number> | undefined
无关特别是Array<number> | undefined
或可选链接 - 这是 TypeScript 不会让您将可能未定义的内容与数字进行比较,因为比较没有多大意义。 在这种情况下,如果未定义数组,您会期望
if (a?.length > 0) {
实现还是不实现? 或者你不完全确定? 如果您不确定,因为许多人可能不会先运行代码来查看它的结果,这就是 TypeScript 错误背后的要点 - 代码令人困惑,因此 TS 提示您修复它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.