【发布时间】:2021-09-13 05:43:00
【问题描述】:
我正在尝试为我的开关柜考虑任何替代方案,因为它很长 我有嵌套的开关盒,看起来像这样
switch (currentTab) {
case pending:
switch (status) {
case approved:
case denied:
break;
case partialApproved:
finalUpdatedInvoiceAmount = updatedInvoiceAmount - (feeAmount - (approvedFeeAmount || 0));
break;
}
break;
case approved:
switch (status) {
case denied:
case partialApproved:
finalUpdatedInvoiceAmount = updatedInvoiceAmount - (feeAmount - (approvedFeeAmount || 0));
break;
}
break;
case denied:
switch (status) {
case approved:
case partialApproved:
finalUpdatedInvoiceAmount = oldApprovedFeeAmount ? updatedInvoiceAmount + (feeAmount - oldApprovedFeeAmount) : updatedInvoiceAmount - (feeAmount - (approvedFeeAmount || 0));
break;
}
break;
case partiallyApprovedTab:
switch (status) {
case approved:
case denied:
case partialApproved:
finalUpdatedInvoiceAmount = oldApprovedFeeAmount ? updatedInvoiceAmount + (feeAmount - oldApprovedFeeAmount) : updatedInvoiceAmount - (feeAmount - (approvedFeeAmount || 0));
break;
}
break;
}
这是另一种可能性吗? 由于代码非常庞大,以后可能会进入其他情况。
【问题讨论】:
-
if (currentTab == pending && status == partialApproved) ... else if (currentTab == approved && [denied, partialApproved].includes(status)) ...…? -
我也遇到了类似的问题,但我必须学习很多不同的方法来避免长时间运行的 switch case。通过链接,它可能会帮助你[替代切换案例](ultimatecourses.com/blog/…)
标签: javascript angular typescript switch-statement object-literal