首页 > 解决方案 > 短路变量赋值 已知至少定义了一个变量

问题描述

我这里有一些涉及短路分配的代码:

// varibleA: object | undefined   
// varibleB: object | undefined   
if(varibleA || varibleB){   
   const selectedVarible: object = varibleA || varibleB;   
 //ERROR Type "object | undefined is not assignable to type object.   
}

在我看来,如果定义了 varA 或 varB,则短路分配应始终返回已定义的对象。这可能是因为短路分配像 else 一样处理它,并且总是至少分配第二个变量 (B),它的类型为 object | 不明确的。如果是这种情况,我该如何解决?谢谢

标签: typescript

解决方案


TypeScript 的控制流分析更适用于变量(或变量的属性),而不是一般表达式。这意味着您可以存储varibleA || varibleB到它自己的变量中,然后检查它:

// varibleA: object | undefined   
// varibleB: object | undefined   
const selectedVariable = varibleA || varibleB; // still object | undefined
if (selectedVariable) {
  // now selectedVariable is known to be object
  console.log(selectedVariable.toString()); // no error
}

希望有帮助。祝你好运!


推荐阅读