在 TypeScript 中分配给泛型函数参数
Assign to generic function parameter in TypeScript
我想使用泛型函数作为参数。但是,我找不到如何实例化这种类型。这是一个简单的例子,我希望它能工作:
function foo(a: number, f: <U>(a: number) => U) {
f(a) // removed the return to make the example simpler
}
function bar(a: number) : number {
return 2*a
}
foo(8, bar);
事实是,我收到此错误:
Argument of type '(a: number) => number' is not assignable to parameter of type '(a: number) => U'.
Type 'number' is not assignable to type 'U'.
'U' could be instantiated with an arbitrary type which could be unrelated to 'number'.
最后一部分对我来说似乎特别奇怪,因为在这种情况下 U 不应该是数字以外的任何东西。如何将 U 实例化为数字?有具体语法吗?
我不太确定你在这里想要达到什么目的,但是将 U
移到前面可以解决这个问题:
function foo<U>(a: number, f: (a: number) => U) {
return f(a)
}
function bar(a: number) : number {
return 2*a
}
foo(8, bar);
如果你想在函数声明中引入泛型类型,你应该把它们放在函数名后面。当函数被调用时,TypeScript 将尝试推断正确的类型。
我想使用泛型函数作为参数。但是,我找不到如何实例化这种类型。这是一个简单的例子,我希望它能工作:
function foo(a: number, f: <U>(a: number) => U) {
f(a) // removed the return to make the example simpler
}
function bar(a: number) : number {
return 2*a
}
foo(8, bar);
事实是,我收到此错误:
Argument of type '(a: number) => number' is not assignable to parameter of type '(a: number) => U'. Type 'number' is not assignable to type 'U'. 'U' could be instantiated with an arbitrary type which could be unrelated to 'number'.
最后一部分对我来说似乎特别奇怪,因为在这种情况下 U 不应该是数字以外的任何东西。如何将 U 实例化为数字?有具体语法吗?
我不太确定你在这里想要达到什么目的,但是将 U
移到前面可以解决这个问题:
function foo<U>(a: number, f: (a: number) => U) {
return f(a)
}
function bar(a: number) : number {
return 2*a
}
foo(8, bar);
如果你想在函数声明中引入泛型类型,你应该把它们放在函数名后面。当函数被调用时,TypeScript 将尝试推断正确的类型。