V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
evax
V2EX  ›  程序员

TS 类型疑惑?

  •  
  •   evax · 2022-12-15 19:34:05 +08:00 · 1743 次点击
    这是一个创建于 728 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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'
    
    12 条回复    2022-12-16 16:45:11 +08:00
    coolzjy
        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')
    ```
    zhouyg
        3
    zhouyg  
       2022-12-15 19:56:50 +08:00
    X | Y 不仅代表了自身的一种类型描述,还涉及计算过程时还有多参数的含义
    zhy0216
        4
    zhy0216  
       2022-12-15 19:57:21 +08:00
    你把 | 理解成并集
    & 理解成交集
    extends 理解成 isSubSet 就很好理解了

    这个资料 https://docs.google.com/presentation/d/1HYknblfcAnbjbdDe4MYTyRQpCw_gV72n2cj88xH7z8c/edit#slide=id.p
    rozbo
        5
    rozbo  
       2022-12-15 20:43:11 +08:00
    你把他这个类型理解为给编译器看的就行,实际运行过程中类型不体现
    evax
        6
    evax  
    OP
       2022-12-16 00:11:38 +08:00
    @coolzjy 我悟了,感谢~
    evax
        7
    evax  
    OP
       2022-12-16 00:13:15 +08:00
    @zhouyg 明白了,感谢
    evax
        8
    evax  
    OP
       2022-12-16 09:48:10 +08:00
    @lin07hui 一语中的!
    dk7952638
        9
    dk7952638  
       2022-12-16 09:52:34 +08:00
    ts 困惑类型就对了,这说明你入门了!
    RoshanWu
        10
    RoshanWu  
       2022-12-16 11:37:59 +08:00
    来来来,一起来系统性地学习学习,早点脱离这些困惑: https://www.v2ex.com/t/885617
    xiaohundun
        11
    xiaohundun  
       2022-12-16 14:53:36 +08:00
    联合类型的每一个 item 都参与运算,是这么解释的么
    evax
        12
    evax  
    OP
       2022-12-16 16:45:11 +08:00
    @RoshanWu 很强,老哥
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2377 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:35 · PVG 23:35 · LAX 07:35 · JFK 10:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.