对“此条件将始终返回“假”,因为类型“a”和“b”没有重叠”的逻辑感到困惑。

bla*_*age 8 javascript logic if-statement typescript

我刚刚开始学习 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
}
Run Code Online (Sandbox Code Playgroud)

可能只是有些东西我没有直接看到,但我不明白为什么这会引发错误。我是这样看的:

  • value可以是a或者b
  • 第一个 if 语句检查是否value不是a
  • else-if 语句检查值是否 b,如果不是,则始终为a(if valueis not a; it's b)

那么为什么说value === "b"总会回来呢false?显然,这并不像我所看到的那样有效;好像我缺少一些东西。另外,我不完全确定这overlap意味着'"a"' and '"b"' have no overlap什么,所以如果有人可以帮助我理解这些,我将不胜感激。