打字稿无法推断出来自回调函数的类型

时间:2019-10-16 20:43:37

标签: typescript

我定义了一个这样的函数:

const func1 = <T, R>(x: T) => (f: (x: T) => R) => f(x)

然后这样称呼它:

func1(2 + 4)(a => a > 5)

我希望结果的类型是布尔值。但是打字稿推断出的func1的类型是:

use<number, unknown>(x: number): (f: (x: number) => unknown) => unknown

如何强制打字稿识别R型?

2 个答案:

答案 0 :(得分:3)

您需要重新定义它,以便func1()返回一个泛型函数,因为您不知道R是什么,直到传递函数为止。

const func2 = <T>(x: T) => <R>(f: (x: T) => R) => f(x)

答案 1 :(得分:0)

最简单的方法是显式提供TR,如下所示:

func1<number, boolean>(2 + 4)(a => a > 5)