TS 类型疑惑?

2022-12-15 19:34:05 +08:00
 evax
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'
1579 次点击
所在节点    程序员
12 条回复
coolzjy
2022-12-15 19:50:21 +08:00
```ts
1 | 2 extends 2 ? '1' : '2'
// 等价于
(1 extends 2 ? '1' : '2') | (2 extends 2 ? '1' : '2')
```
lin07hui
2022-12-15 19:51:16 +08:00
zhouyg
2022-12-15 19:56:50 +08:00
X | Y 不仅代表了自身的一种类型描述,还涉及计算过程时还有多参数的含义
zhy0216
2022-12-15 19:57:21 +08:00
你把 | 理解成并集
& 理解成交集
extends 理解成 isSubSet 就很好理解了

这个资料 https://docs.google.com/presentation/d/1HYknblfcAnbjbdDe4MYTyRQpCw_gV72n2cj88xH7z8c/edit#slide=id.p
rozbo
2022-12-15 20:43:11 +08:00
你把他这个类型理解为给编译器看的就行,实际运行过程中类型不体现
evax
2022-12-16 00:11:38 +08:00
@coolzjy 我悟了,感谢~
evax
2022-12-16 00:13:15 +08:00
@zhouyg 明白了,感谢
evax
2022-12-16 09:48:10 +08:00
@lin07hui 一语中的!
dk7952638
2022-12-16 09:52:34 +08:00
ts 困惑类型就对了,这说明你入门了!
RoshanWu
2022-12-16 11:37:59 +08:00
来来来,一起来系统性地学习学习,早点脱离这些困惑: https://www.v2ex.com/t/885617
xiaohundun
2022-12-16 14:53:36 +08:00
联合类型的每一个 item 都参与运算,是这么解释的么
evax
2022-12-16 16:45:11 +08:00
@RoshanWu 很强,老哥

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/902795

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX