我在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; }
但这也不起作用。
我如何更改它以便正确识别能够接受命名参数的函数,以及它们中的任意数量?
答案 0 :(得分:1)
尝试这样的事情
interface MixinDescriptor {
[id: string]: (...args: any[]) => any;
}
...
表示该功能可以使用rest of parameters。由于rest参数是可选的,因此该接口适用于任何类型的函数
还要考虑this example