TypeScript中如何合并业务逻辑相同的两个if条件?
可以合并,优化方案如下
先拆解原代码的两个分支条件:
- 共同逻辑:两个分支都要求
model不为空,且isActive为false - 差异逻辑:
modNames.includes(model)和this.installed的状态互斥(一个为真时另一个必为假)
基于这个逻辑,可以将两个条件合并,利用异或关系(!== 等价于异或)简化判断,最终代码如下:
const modNames = ['CW652', 'MNOP200', '100ABCD', 'XYZ200']; if (model && !isActive && (modNames.includes(model) !== this.installed)) { this.route = true; this.stop = false; } else { this.route = false; this.stop = true; }
逻辑验证
原两个分支的差异条件:
modNames.includes(model) && !this.installed!modNames.includes(model) && this.installed
这两种场景刚好对应 modNames.includes(model) 和 this.installed 的值不相等,用 !== 可以精准覆盖,和原逻辑完全一致,同时代码更简洁易读。
内容的提问来源于stack exchange,提问作者GD_Java
相关产品推荐
相关产品推荐

