【发布时间】:2022-01-13 17:02:21
【问题描述】:
假设我有一个接口
interface Applicative<T> {}
现在我想定义一个函数f:
- 接受一个函数并接受一个类型 U 扩展一个 Applicative 包装 Any
- 并返回一个包装函数的 U
如何在 Typescript 中定义这个?
function f<U extends Applicative>(fn: Function, a: U<any>): U<Function>
是我幼稚的尝试,但这是无效的
【问题讨论】:
-
U 也是通用的。恐怕你不能在泛型参数声明中声明泛型。可能有帮助:“函数 f>(fn: Function, a: U): U”。免责声明:我明白这不是您想要的。
-
@TSV 谢谢。这可以编译,但由于
any|Function与any一样好,因此此定义不能保证f返回一个包装函数的U(仅此而已) -
我的另一个想法是“function f>(fn: Function, a: U): Applicative
”——但这并没有给出所需的函数结果类型。 . -
@TSV;再次感谢,但这次不能保证函数返回的类型是 U 类型(或派生自 U) - 这是我的要求之一
标签: typescript