我下面有一个代码示例,在第[[const cars = x.cars.filter()]行中),我收到x.cars的错误object is undefined]。为了克服这个问题,我添加了if(x.cars)之类的if检查。通过添加此代码,我对此代码的代码覆盖范围因果单元测试存在问题。因此,我进行了研究,发现有一个Null断言运算符可以解决此打字稿编译器问题。在这种情况下可以使用Null断言运算符还是我需要考虑的其他事项? this.carOptions$().pipe(
map((result: any): string => {
return result
.filter(x => x.selected)
.map(x => {
if (x.cars) { //added this condition to overcome object is possibly undefined error
const cars = x.cars
.filter(x => x.selected)
.map(x => x.name)
.join(',');
return `${x.name}~${cars}`;
}
})
})
).subscribe(result => {
this.result = result;
});
计划如下使用空断言运算符
const cars = x.cars! .filter(x => x.selected) .map(x => x.name) .join(','); return `${x.name}~${cars}`;
我下面有一个代码示例,在const cars = x.cars.filter()行时,我得到了x.cars可能未定义错误对象的信息。为了克服这个问题,我添加了if(x.cars)之类的if检查。由...
null
,则请不要将其视为灵丹妙药。)>为什么这不是一个好习惯?因为如果对象是null
/ undefined
,则您的代码将以与未使用此运算符相同的方式中断。但是编译器无法抱怨,您的测试覆盖工具分析器也一样。