gpt4 book ai didi

javascript - typescript 中 switch 的替代方案

转载 作者:行者123 更新时间:2023-12-02 18:39:38 25 4
gpt4 key购买 nike

我正在尝试为我的开关盒寻找任何替代方案,因为它很长我有嵌套的开关盒,看起来像这样

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;
}

有另一种可能性吗?由于代码非常庞大,以后可能会出现其他情况。

最佳答案

也许你可以尝试 handlerMap:

const handler1 = () => { finalUpdatedInvoiceAmount = updatedInvoiceAmount - (feeAmount - (approvedFeeAmount || 0)); }
const handler2 = () => { finalUpdatedInvoiceAmount = oldApprovedFeeAmount ? updatedInvoiceAmount + (feeAmount - oldApprovedFeeAmount) : updatedInvoiceAmount - (feeAmount - (approvedFeeAmount || 0)); }

const handlerMap = {
[pending]: {
[partialApproved]: handler1
},
[approved]: {
[denied]: handler1,
[partialApproved]: handler1,
},
[denied]: {
[approved]: handler2,
[partialApproved]: handler2,
},
[partiallyApprovedTab]: {
[approved]: handler2,
[denied]: handler2,
[partialApproved]: handler2,
}
}

handlerMap[currentTab] && handlerMap[currentTab][status] && handlerMap[currentTab][status]()
// handlerMap[currentTab]?.[status]?.()

关于javascript - typescript 中 switch 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68205367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com