我正在尝试推断我正在转换的函数的类型参数并将其包含在结果中。我不确定这目前是否可行。
简化示例:
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>;