【发布时间】:2020-05-07 18:22:26
【问题描述】:
问题:
布尔类型的判别联合似乎只适用于真正的关联类型。
复制者:
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。这是正常行为,还是更像一个问题?
【问题讨论】:
-
它按预期工作。你有什么问题?
-
这适用于严格的空检查
-
好吧,事实上,使用 value.hint === true,它可以工作。正如@TitianCernicova-Dragomir 所说,它与非严格的空检查有关!谢谢。我猜如果没有这些检查,条件类型必须为 null |布尔值,然后 if 不能为 else 因为它可能为空。
标签: typescript