gpt4 book ai didi

javascript - 如何在Typescript中实现非短路条件?

转载 作者:行者123 更新时间:2023-12-02 17:28:29 32 4
gpt4 key购买 nike

如何在 typescript 中以非短路方式评估条件?Typescript 不允许使用 &| 作为 bool 类型。我需要非短路检查的原因是我在函数 isValueValid 中调用了 showErrors。

鉴于此功能

function isValue1Valid(){
if(value1 === 0) return true;
showErrors1();
return false;
}

function isValue2Valid(){
if(value2 === 0) return true;
showErrors2();
return false;
}

然后以我的情况

if(isValue2Valid() & isValue2Valid()){
//Submit data
}

虽然我可以这样做

if(isValue2Valid() & isValue2Valid()){
//Submit data
return;
}
showErrors1()
showErrors2()

但我觉得在 isValueValid 函数中调用它。实际上,我总是认为只要出现错误就默认调用显示错误。

最佳答案

要回答你的问题,你可以这样做

if ([isValue2Valid(), isValue2Valid()].every(Boolean)) {
//Submit data
}

评估所有函数调用,然后组合它们的值。但您确实不应该首先让 isValueValid 调用 showError 。相反,让您的测试函数返回错误消息,然后如果有任何错误消息,则显示它们:

function getValue1Error() {
if (value1 === 0) return null;
else return "error1";
}

function getValue2Error() {
if (value2 === 0) return null;
else return "error2";
}

// then:
const errors = [getValue1Error(), getValue2Error()] // or even better, just a loop over your fields
if (errors.some(Boolean)) {
for (let error of errors)
showError(error);
} else {
// Submit data
}

关于javascript - 如何在Typescript中实现非短路条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39612608/

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