type Union<A, B> = A extends B ? '1' : '2'
type A = 1 | 2
type B = 1
type C = Union<A, B> // '1' | '2' ---为什么不是 '2'?
type D = Union<B, A> // '1'
type E = A extends B ? '1' : '2' // '2'
type F = B extends A ? '1' : '2' // '1'
1
coolzjy 2022-12-15 19:50:21 +08:00 3
```ts
1 | 2 extends 2 ? '1' : '2' // 等价于 (1 extends 2 ? '1' : '2') | (2 extends 2 ? '1' : '2') ``` |
2
lin07hui 2022-12-15 19:51:16 +08:00
|
3
zhouyg 2022-12-15 19:56:50 +08:00
X | Y 不仅代表了自身的一种类型描述,还涉及计算过程时还有多参数的含义
|
4
zhy0216 2022-12-15 19:57:21 +08:00
你把 | 理解成并集
& 理解成交集 extends 理解成 isSubSet 就很好理解了 这个资料 https://docs.google.com/presentation/d/1HYknblfcAnbjbdDe4MYTyRQpCw_gV72n2cj88xH7z8c/edit#slide=id.p |
5
rozbo 2022-12-15 20:43:11 +08:00
你把他这个类型理解为给编译器看的就行,实际运行过程中类型不体现
|
9
dk7952638 2022-12-16 09:52:34 +08:00
ts 困惑类型就对了,这说明你入门了!
|
10
RoshanWu 2022-12-16 11:37:59 +08:00
来来来,一起来系统性地学习学习,早点脱离这些困惑: https://www.v2ex.com/t/885617
|
11
xiaohundun 2022-12-16 14:53:36 +08:00
联合类型的每一个 item 都参与运算,是这么解释的么
|