typescript 不同类型的并集的交集不是我所期望的

u3r8eeie  于 2023-01-18  发布在  TypeScript
关注(0)|答案(1)|浏览(149)
type T1 = 1 | 'b' & string | number // "b" | number
type T2 = 1 | 2 & 1 | 3 // 1 | 3

我是TS的新手,谁能告诉我为什么是"b" | number1 | 3,这是怎么回事?

u1ehiz5o

u1ehiz5o1#

&的优先级高于|

因此,您的代码被解释为:

type T1 = 1 | ('b' & string) | number 
type T2 = 1 | (2 & 1) | 3

在这种情况下"b" | number1 | 3是有意义。
如果你加上括号,它将工作的方式,你想:

type T1 = (1 | 'b') & (string | number) // 1 | "b"
type T2 = (1 | 2) & (1 | 3) // 1

相关问题