typescript - 带布尔值的可区分联合
问题描述
问题:
布尔类型的判别联合似乎仅适用于真正的关联类型。
复制器:
interface DummyA {
hint: true
a: string
}
interface DummyB {
hint: false
b: string
}
type Dummy =
| DummyA
| DummyB;
const dummies: Dummy[] = [
{
hint: true,
a: "a"
},
{
hint: false,
b: "b"
}
]
dummies.forEach(value => {
if (value.hint) {
value.a
} else {
value.b
}
})
预期结果:
如果它适用于 true,它应该适用于 false。这是正常行为,还是更像一个问题?
解决方案
如果您使用strictNullChecks
它,它将按预期工作。如果您不使用严格的空检查(我怀疑基于您的问题),如果您使用=== true
dummies.forEach(value => {
if (value.hint === true) {
value.a
} else {
value.b
}
})
推荐阅读
- java - Mockito 模拟没有被调用 - ArgumentCaptor 被忽略
- android - “SwipeRefreshLayout”刷新 web 视图只工作一次
- c - 如何验证输入值只是 C 中的正数?
- python - 如何在 BeautifulSoup 中使用 find() 和 find_all()?
- javascript - 如何在对象中使用 .includes() 或类似内容?
- r - 在R中的openxlsx中将一行文本添加到Excel工作表
- java - 动态重命名资产文件夹中的文件名
- visual-studio-code - javascript (React) 的智能代码在 VS Code windows 10 上不起作用
- selenium - Selenium C#异常状态为ReceiveFailure,消息为:底层连接已关闭
- javascript - 日历单击按样式颜色?