Javascript 有一个新的吗?(“安全运算符”)Typescript中处理空值的替代方法?

Javascript 有一个新的吗?(“安全运算符”)Typescript中处理空值的替代方法?,javascript,node.js,angular,typescript,ecmascript-6,Javascript,Node.js,Angular,Typescript,Ecmascript 6,在我的Angular应用程序中,我试图使用ngIf显示/隐藏div 以下是我的HTML: <div *ngIf="damageReportToPolice()"> </div> 当页面加载时,这工作正常&当条件为true时,显示div 但是,当我reset() 无法读取null的属性“value” 当我的HTML中有这个条件时,我可以使用?作为一个安全的操作符,如下所示: damageDetailsTwoForm['controls'].injuryTypeGp.con

在我的Angular应用程序中,我试图使用
ngIf
显示/隐藏div

以下是我的HTML:

<div *ngIf="damageReportToPolice()">
</div>
当页面加载时,这工作正常&当条件为true时,显示div

但是,当我
reset()

无法读取null的属性“value”

当我的HTML中有这个条件时,我可以使用
作为一个安全的操作符,如下所示:

damageDetailsTwoForm['controls'].injuryTypeGp.controls.injuryType?.value?.value === 'Burglary in the car'
但是我似乎找不到一个打字脚本来代替这个

有没有人能告诉我有没有安全的接线员?或者我怎样才能避开这个问题


提前多谢

只是出于好奇,它被命名为猫王操作符(参考Kotlin),它也是下一个ES规范中可能出现的。如果您不想像这样对typescript/javascript进行链接,那么没有一个简单的解决方案

injuryType && injuryType.value && injuryType.value.value
然后,您可以创建一个函数,在出现异常时返回
null

export function safeNavigation(cb) {
  try {
    return cb();
  } catch (error) {
    return null;
  }
};




// In the component...
if (safeNavigation(() => injuryType.value.value) === 'Burglary in the car') {
...
另外,如果它没有引起冲突,我喜欢将它重命名为
\uu
,并像
\u(()=>path.to.navigate)一样使用它

export function safeNavigation(cb) {
  try {
    return cb();
  } catch (error) {
    return null;
  }
};




// In the component...
if (safeNavigation(() => injuryType.value.value) === 'Burglary in the car') {
...