代码之家  ›  专栏  ›  技术社区  ›  Marnes

Typescript:有n个union类型T的参数的函数,当调用方必须匹配类型时,为什么推断一个参数的类型不能推断所有参数?

  •  0
  • Marnes  · 技术社区  · 4 年前

    给定此函数签名: function foo<T extends X | Y>(bar: T, baz: T) {}
    呼叫者不能混音 X Y . 编译器强制执行 bar baz 或者 二者都 ,或两者都有

    但是,对 酒吧 缩小它的类型,但不是 巴兹 ts playground

    方法体外部的这种对称性能否以某种方式延续到方法体中,以便1类型检查缩小所有参数?

    1 回复  |  直到 4 年前
        1
  •  2
  •   Ryan Cavanaugh    4 年前

    你的假设是错误的;法律上的比较是

    compare<string | number>(10, "");
    

    因此,根据另一个参数的类型缩小一个参数的范围是无效的