typescript 使用泛型提取函数的参数

nr9pn0ug  于 2023-01-27  发布在  TypeScript
关注(0)|答案(1)|浏览(96)

使用泛型提取函数参数的正确方法是什么?
我正在尝试提取这个函数的参数:

interface Props<T> {
    data: T[];
    test: (x: T) => void
}

function fn<T>(props: Props<T>): void {
    return;
};

并将它们传递给一个新的函数fn2,这样我就相当于fn了,使用下面的方法是行不通的

type GetProps<T extends any> = T extends (props: infer U) => void ? U: never
type FnProps = GetProps<typeof fn>

function fn2<T>(props: FnProps<T>): void { // Type 'FnProps' is not generic
    return;
}

这里GetProps的正确写法是什么?
Playground

2ledvvac

2ledvvac1#

如果我没理解错你的问题,你可以把你的工具类型写成

type FnProps<T> = GetProps<typeof fn<T>>

然后

function fn2<T>(props: FnProps<T>): void {
    return;
}

相关问题