在4.9份声明中,他们描述了现在的。于是,我把他们的例子带到操场上,对它进行了修补。我发现typeof和in的不可能情况正在缩小到never,而不是生成警告或错误:
// Should be illegal but doesn't error out...?packageJSON.name是一个字符串,这意味着不可能检查packageJSON.name的类型是否是右边的一个数字。("name" in p
} 然后像这样调用这个函数: function bar() { if (a === undefined) { }
return a; // TypeScript infers a as number (good!)} 因为函数foo返回元组(number, undefined)或(undefined, number),所以在没有通过a ===
我使用了TypeScript Deep Dive中描述的穷举检查 与不是联合类型的类型相比,联合类型的穷举检查的工作方式似乎不同。为什么??例如,在下面的代码中,请注意,只有当我们断言x.kind为never时,exhaustivenessCheck1才能工作(不会在不应该输入error时输入error)。然而,只有当我们断言x是never时,exhaustivenessCheck2才会做正确的事情