typescript - 如何使用问题运算符优化代码
问题描述
我的代码中有多个条件!所以我正在考虑使用问题运算符而不是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;
谁能帮我
解决方案
我将解构并将空字符串分配为默认值:
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
链是否失败,而不是空字符串。
推荐阅读
- git - 不明白为什么 git merge -s ours 会忽略以前的提交
- javascript - 将每个其他数组元素的第一个字母大写
- flutter - 值更改后小部件宽度不更新
- android - 如何调整每个平台的小部件大小?
- javascript - React - 如何将两个值而不是一个传递给钩子
- flutter - 增加从顶部到网格视图第一行的内边距
- python - 从 sympy 获得不定积分
- java - 在应用程序中的时间过去后显示文本
- for-loop - 在 Go 中循环切片以创建地图
- java - 在 RESTful Spring Boot 应用程序中,如何对嵌套对象属性进行 url 查询?