typescript - 为什么 TypeScript 将过滤后的字符串数组解释为字符串 | 布尔数组
问题描述
我有以下表达式
[isProduction() && '/prod-path', 'first', 'second'].filter(Boolean)
TypeScript 不同意这是一个字符串 []。谁能告诉我为什么?
解决方案
如果 isProduction 为假,你最终会得到:
[false, 'first', 'second']
正如 Typescript 所说,一个Array<string|boolean>
.
过滤器不会在类型级别上过滤掉布尔值。您必须像这样手动说出它:
.filter((item):item is string => Boolean(item))
推荐阅读
- javascript - 如何确定 IE 11 中的缩放级别?
- python - 我应该如何将数据集文件夹路径放在这个 python 代码中
- android - 扫描二维码或发布时获取用户配置文件失败
- django - 使用 Django 2.x 时缩放或避免迁移?
- java - 当我动态添加 SOAP:HEADER 时,Apache CXF 会删除正文部分中的命名空间限定符。如何返回预选赛?
- javascript - 有没有办法使用赛普拉斯命令设置 CSS 属性,如“显示”?
- bash - 如何在条件语句和循环中使用 diff 命令
- android - 清单合并失败:属性 application@appComponentFactory (android.support.v4.app.CoreComponentFactory)
- python - 如何使用 xarray 提取最近坐标的变量值?
- javascript - 将 XMLHttpRequest 数据动态渲染到 Vue 元素