首页 > 解决方案 > 如何只检查打字稿中布尔或未定义联合类型的真/假值?

问题描述

我有两个布尔值 | 未定义的变量

const condition1: boolean | undefined = xxx; // xxx is a return value from another method
const condition2: boolean | undefined = xxx;

我想得到 的结果condition1 && condition2,但undefined应该排除(仅表示true/false事项,undefined无效,不应比较)

所以应该是

if(condition1 !== undefined && condition2 !== undefined) {
    return condition1 && condition2;
}
if(condition1 !== undefined && condition2 === undefined) {
    return condition1;
}
if(condition1 === undefined && condition2 !== undefined) {
    return condition2;
}
if(condition1 === undefined && condition2 === undefined) {
    return true;
}

如何简化代码?

标签: javascripttypescriptunion-types

解决方案


您可以将它们放入一个数组中,过滤掉undefineds 然后检查是否.every为真:

return [condition1, condition2]
  .filter(cond => cond !== undefined)
  .every(Boolean);

推荐阅读