对象参数接口的TypeScript函数属性...任意数量的args

时间:2015-10-01 14:59:07

标签: javascript typescript visual-studio-code

我在Interface中有一个函数声明,如下所示:

mixin(desc: MixinDescriptor): any;

MixinDescriptor的定义如下:

interface MixinDescriptor { [id: string]: () => any; }

但是,如果我使用这样的mixin函数:

chance.mixin({
  test: function(arg1, arg2) {
  }
}

VSCode将表明它不是正确的定义。它的工作原理,因为它的实现就是这样,但它的接口声明必须是错误的。

我尝试将MixinDescriptor更改为:

interface MixinDescriptor { [id: string]: (args: any[]) => any; }

但这也不起作用。

我如何更改它以便正确识别能够接受命名参数的函数,以及它们中的任意数量?

1 个答案:

答案 0 :(得分:1)

尝试这样的事情

 interface MixinDescriptor { 
     [id: string]: (...args: any[]) => any; 
 }

...表示该功能可以使用rest of parameters。由于rest参数是可选的,因此该接口适用于任何类型的函数

还要考虑this example