短路变量分配至少定义了一个变量

时间:2019-04-10 22:14:18

标签: typescript

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

// 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 |。未定义。如果是这种情况,我该如何解决?谢谢

1 个答案:

答案 0 :(得分:1)

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
}

希望有帮助。祝你好运!