代码之家  ›  专栏  ›  技术社区  ›  Trident D'Gao

如何在TypeScript中翻转联合的分布性?

  •  0
  • Trident D'Gao  · 技术社区  · 6 年前

    在下面的代码里是什么 SomeMagic 类型必须是反转 Y ?

    type X<A> = { value: A };
    type Y = X<number> | X<string>;
    type Z = SomeMagic<Y>;  // <-- what SomeMagic should be to get Z of X<number | string>?
    
    0 回复  |  直到 6 年前
        1
  •  2
  •   smnbbrv    6 年前

    您可以反转 Y.value 并将其用作 X :

    type X<A> = { value: A };
    type Y = X<number> | X<string>;
    type Z = X<Y['value']>;
    

    因此:

    type Z = {
      value: string | number;
    };