提问人:blankpage 提问时间:3/16/2021 更新时间:3/16/2021 访问量:3408
混淆了“此条件将始终返回'false',因为类型'a''和'b''没有重叠'”的逻辑。
Confusion over the logic of "This condition will always return 'false' since the types '"a"' and '"b"' have no overlap."
问:
我刚开始学习 TypeScript,目前正在阅读手册。其中一点是 TypeScript 捕获逻辑错误,它给出了这个例子:
const value = Math.random() < 0.5 ? "a" : "b";
if (value !== "a") {
// ...
} else if (value === "b") {
// This condition will always return 'false' since
// the types '"a"' and '"b"' have no overlap.
// Oops, unreachable
}
可能只是我没有直接看到一些东西,但我不明白为什么这会引发错误。以下是我的看法:
value
可以是 或a
b
- 第一个 if 语句检查 if 不是
value
a
- else-if 语句检查值是否为 ,如果不是,则始终是 (if is not ;
b
a
value
a
b
)
那么为什么它说会一直回来呢?显然,这与我所看到的方式不同;似乎我错过了什么。此外,我不完全确定这意味着什么,所以如果有人能帮助我理解这些,将不胜感激。value === "b"
false
overlap
'"a"' and '"b"' have no overlap
答: 暂无答案
评论
else
基本上,永远不会出现这样的情况(如果返回为 false,则必须如此)和 (如果返回为 true,则必须如此)。只有当第一个条件返回 false(在 JavaScript 的情况下为 falsy)时,才会读取该分支。value === "a"
value !== "a"
value === "b"
value === "b"
else
if
value !== "a"
value === "b"
value
Math.random()
value
value
value
if
value
else-if
else