转换函数时打字稿推断类型参数

时间:2021-07-20 01:00:18

标签: typescript generics inference

问题

我正在尝试推断我正在转换的函数的类型参数并将其包含在结果中。我不确定这目前是否可行。

简化示例:

type Transform<F> = F extends (a0: any, ...args: infer A) => infer R ? (...args: A) => R : never;

function func1<T>(a0: any, a1: any) {}

let func2: Transform<typeof func1>;

在上面的例子中,func2(a1: any) => void

我想要实现的是 <T>(a1: any) => void,其中 <T> 是从 func1 推断的类型参数。

我尝试过的东西(不起作用)

我想到了这样的事情:

type Transform<F> = F extends <infer P>(a0: any, ...args: infer A) => infer R ? <P>(...args: A) => R : never;

或者只是传递一个这样的类型:

type Transform<F, T> = F extends (a0: any, ...args: infer A) => infer R ? <T>(...args: A) => R : never;

let func2: Transform<typeof func1, string>;

0 个答案:

没有答案