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

时间:2018-07-27 07:11:48

标签: typescript

示例:

function a(...args: ???type of b() params???) {
  b(...args)
}

我希望argsb的参数类型。

如果您想知道为什么要这样做,则用于代码的可读性/封装性。 bimport的函数,我不在乎它在函数a声明级别的实现

2 个答案:

答案 0 :(得分:4)

您可以在3.0 Tuples in rest parameters and spread expressions中执行此操作(目前应在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);

答案 1 :(得分:1)

这现在可能是另一种方式:

function a(...args: Parameters<typeof b>) {
  b(...args);
}

playground link