type T = 1 & '2';
const a: T = ???
没有可能分配给a
的值,但是T
是1 & "2"
,而不是never
,即使在严格模式下也是如此。为什么?
答案 0 :(得分:2)
我碰巧最近提交了an issue档案,询问了这个问题。答案是,无法分配给1 & '2'
的错误比无法分配给never
的错误更有用:
此处的不一致是因为仅在联合中使用时才减少交点。因此
"foo" & "bar"
将保持该类型,除非它是联合的一部分。这就是为什么x
无法分配给u
的原因。我们发现,保持交叉点较长会为用户提供更好的错误消息,因为
never
不能告诉您类型的来源。此外,关于用户键入类型的意图还有什么要说的。