这是我的代码的骨架:
var myArray: (Array<any> | null);
if (cnd) {
myArray = [];
myArray?.push(elt); // Question 1
myArray[0].key = value; //Question 2
} else {
myArray = null;
}
问题1:为什么需要?
? myArray已分配给一个空数组。
问题2:避免错误的语法是什么:对象可能为null。
感谢您的回答。
答案 0 :(得分:2)
我认为答案是人类仍然比类型检查器更聪明。我知道那并不令人满意,但这是事实。类型检查器通常仅使用条件语句来确定某些内容是否可以为null。但是这个代码示例有些人为的。我可能会像这样重组代码:
var myArray: (Array<any> | null);
if (cnd) {
elt.key = value;
myArray = [elt];
} else {
myArray = null;
}
这消除了这两个奇怪之处。
答案 1 :(得分:0)
对于问题1,您可以参考此link
对于问题2,只需在访问对象之前像这样对null
进行检查
if (obj !== null) {
obj.doSomeThing();
}
,或者如果您的对象可以是null
或undefined
,则类似于以下内容。 null
和undefined
被称为伪造值,因此在布尔上下文中使用它们时,它们会自动强制为false
if (obj) {
obj.doSomeThing();
}