我这里有一些涉及短路分配的代码:
// 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 |。未定义。如果是这种情况,我该如何解决?谢谢
答案 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
}
希望有帮助。祝你好运!