首页 > 解决方案 > 如何使用问题运算符优化代码

问题描述

我的代码中有多个条件!所以我正在考虑使用问题运算符而不是if() .. else... 但是我不太了解这个运算符。

这是我的代码:

if(this.intake.repairdamageInfo.additionalinfo){
  damageObjectModel.price = this.intake.repairdamageInfo.additionalinfo.newPrice;
  damageObjectModel.store = this.intake.repairdamageInfo.additionalinfo.storePurchase;
  damageObjectModel.dayValue = this.intake.repairdamageInfo.additionalinfo.dayValue;
}
else {
  damageObjectModel.price = "";
  damageObjectModel.store = "";
  damageObjectModel.dayValue = "";
} 

我这样尝试,但没有奏效:

  damageObjectModel.price = this.intake.repairdamageInfo.additionalinfo?.newPrice;
  damageObjectModel.store = this.intake.repairdamageInfo.additionalinfo?.storePurchase;
  damageObjectModel.dayValue = this.intake.repairdamageInfo.additionalinfo?.dayValue;

谁能帮我

标签: typescriptconditional-operator

解决方案


我将解构并将空字符串分配为默认值:

const { newPrice = '', storePurchase = '', dayValue = '' } = this.intake.repairdamageInfo.additionalinfo ?? {};
Object.assign(damageObjectModel, { price: newPrice, store: storePurchase, dayValue });

?? {}意味着如果为空,则整个右侧将评估为空对象additionalInfo

您的原始代码

damageObjectModel.price = this.intake.repairdamageInfo.additionalinfo?.newPrice;

不起作用,因为?.可选链接将评估undefined链是否失败,而不是空字符串。


推荐阅读