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 | 不明确的。如果是这种情况,我该如何解决?谢谢
解决方案
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
}
希望有帮助。祝你好运!