gpt4 book ai didi

typescript - 仅指定第一类型参数

转载 作者:搜寻专家 更新时间:2023-10-30 22:04:47 25 4
gpt4 key购买 nike

function f<T, U>(foo: T, bar: U) {
}

f(1, "x"); // OK, inferes <number, string>
f<number>(1, "x"); // ERROR: Expected 2 type arguments, but got 1.

我怎样才能只传递第一个类型参数而让 TypeScript 推断另一个?

最佳答案

正如@Joe-Clay 所说,您可以设置默认参数以使泛型可选,但编译器会 not infer them随心所欲。

我使用的一种解决方法是将函数拆分为多个函数(通过 currying ),每个函数都有一个通用参数。例如:

function f<T,U>(foo:T, bar: U): [T, U] {
return [foo, bar];
}

成为

function curriedF<T>(foo: T) {
return function <U>(bar: U): [T, U] {
return [foo, bar]
}
}

允许这样做:

var z = curriedF(1)("x"); // [number, string]
var z = curriedF<number>(1)("x"); // also [number, string]

希望对您有所帮助;祝你好运。


更新 2018-10-19

部分推理有一些进展(使用 * sigil 标记“请为我推断这个”)并且它可能出现在 TypeScript 3.2 或附近。参见 this pull request获取更多信息。

关于typescript - 仅指定第一类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45509621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com