Typescript:是否可以获取函数参数列表的类型?

Nur*_*yev 3 typescript

例子:

function a(...args: ???type of b() params???) {
  b(...args)
}
Run Code Online (Sandbox Code Playgroud)

我想args成为 的b参数类型。

如果你想知道为什么我想要这个,那么它是为了代码可读性/封装。b是ed 函数,我不关心它在函数声明import层面的实现a

Tit*_*mir 5

您可以在 3.0 元组中的剩余参数和展开表达式中执行此操作(现在在 RC 中应该很快就会推出)

type ArgumentType<T> = T extends (...args: infer U) => any ? U : never;

function a(...args: ArgumentType<typeof b>) {
    function b(...args: any[]) {

    }
}
// More complex examples
function a2(...args: ArgumentType<typeof b>) {
    function b(name: string, value: number) {

    }
}

a2("", 1);
Run Code Online (Sandbox Code Playgroud)