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



给定此函数签名:function foo<T extends X | Y>(bar: T, baz: T) {}
调用方不能混合使用XY。编译器强制要求barbaz都是X,或者都是Y

但是,对bar的类型检查会缩小其类型,但不会缩小baz的类型。证明:ts游乐场

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

您的假设是错误的;一个比较的合法调用是

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

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

相关内容

最新更新