【问题标题】:How to optimize code with question operator如何使用问题运算符优化代码
【发布时间】:2021-02-08 15:35:58
【问题描述】:

我的代码中有多个条件!所以我正在考虑使用问题运算符而不是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;

谁能帮帮我

【问题讨论】:

    标签: typescript conditional-operator


    【解决方案1】:

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

    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,而不是空字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-22
      • 2015-09-26
      • 1970-01-01
      • 2023-01-29
      • 2022-06-12
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      相关资源
      最近更新 更多