jmv*_*dad 4 javascript evaluation-strategy typescript
如何在打字稿中以非短路方式评估条件?打字稿不允许&或|布尔类型。我需要非短路检查的原因是我在函数中调用了 showErrors isValueValid。
鉴于此功能
function isValue1Valid(){
if(value1 === 0) return true;
showErrors1();
return false;
}
function isValue2Valid(){
if(value2 === 0) return true;
showErrors2();
return false;
}
Run Code Online (Sandbox Code Playgroud)
然后在我的情况下
if(isValue2Valid() & isValue2Valid()){
//Submit data
}
Run Code Online (Sandbox Code Playgroud)
虽然我可以这样做
if(isValue2Valid() & isValue2Valid()){
//Submit data
return;
}
showErrors1()
showErrors2()
Run Code Online (Sandbox Code Playgroud)
但是我觉得在 isValueValid 函数中调用它。实际上,我总是认为在出现错误时默认调用 show errors 。
要回答你的问题,你可以这样做
if ([isValue2Valid(), isValue2Valid()].every(Boolean)) {
//Submit data
}
Run Code Online (Sandbox Code Playgroud)
评估所有函数调用,然后组合它们的值。但你真的不应该首先isValueValid打电话showError。相反,让您的测试函数return显示错误消息,然后如果有,请显示它们:
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
}
Run Code Online (Sandbox Code Playgroud)