为什么typescript将未知缩小为永远不在可访问的条件块内



当在Typescript Playground(链接(中输入下面的示例时,将鼠标悬停在console.log语句中的foo上会发现foo的类型已缩小到never。但似乎情况并非如此,因为按照下面的方式运行logIfFoo确实会导致调用console.log(foo)。这背后的解释是什么?

const logIfFoo = (foo: unknown): void => {
if (foo instanceof Object && "bar" in foo) {
console.log(foo);
}
}
logIfFoo({ "bar": "baz" });

事实证明这是一个悬而未决的问题。有一个拉取请求已被批准,正在等待合并。

最新更新