javascript - 如何只检查打字稿中布尔或未定义联合类型的真/假值?
问题描述
我有两个布尔值 | 未定义的变量
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;
}
如何简化代码?
解决方案
您可以将它们放入一个数组中,过滤掉undefined
s 然后检查是否.every
为真:
return [condition1, condition2]
.filter(cond => cond !== undefined)
.every(Boolean);
推荐阅读
- elasticsearch - 使用“日期匹配”规则后,logstash 中的时间戳错误
- prometheus - Vault 和 Prometheus 与 Helm 图表
- c# - 如何仅在 ASP.NET MVC 中仅显示当前登录用户创建的项目
- java - 简单的 Spring Cloud 配置服务器未启动-java.lang.ClassNotFoundException: ConfigDataMissingEnvironmentPostProcessor
- mule4 - Mulesoft-Sql 选择连接器查询问题
- amazon-web-services - 调用模块中的提供者
- java - 卡夫卡消费者 ClassNotFoundException
- php - 用于遗留 Laravel 项目的 memcached
- javascript - 使用列表过滤不同的 div
- variables - 如何设置队列时间变量等于预期值以在 azure 管道中执行模板