我定义了一个这样的函数:
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型?
答案 0 :(得分:3)
您需要重新定义它,以便func1()
返回一个泛型函数,因为您不知道R
是什么,直到传递函数为止。
const func2 = <T>(x: T) => <R>(f: (x: T) => R) => f(x)
答案 1 :(得分:0)
最简单的方法是显式提供T
和R
,如下所示:
func1<number, boolean>(2 + 4)(a => a > 5)