为什么两个不同的文字的交集不等于从不?

时间:2018-08-15 16:32:12

标签: typescript types

type T = 1 & '2';
const a: T = ???

没有可能分配给a的值,但是T1 & "2",而不是never,即使在严格模式下也是如此。为什么?

1 个答案:

答案 0 :(得分:2)

我碰巧最近提交了an issue档案,询问了这个问题。答案是,无法分配给1 & '2'的错误比无法分配给never的错误更有用:

  

此处的不一致是因为仅在联合中使用时才减少交点。因此"foo" & "bar"将保持该类型,除非它是联合的一部分。这就是为什么x无法分配给u的原因。

     

我们发现,保持交叉点较长会为用户提供更好的错误消息,因为never不能告诉您类型的来源。此外,关于用户键入类型的意图还有什么要说的。

相关问题