我在定义函数成员的接口时遇到了问题,这些函数成员接受可变数量的参数。以下面的object literal为例:
var obj = {
func: () => {
for(var i = 0; i < arguments.length; i++) {
console.log(arguments[i]);
}
}
};
我希望能够定义一个接口,例如:
interface IExample {
func: ( ??? ) => void;
}
这样下面的代码就可以编译而不会出错:
var test = (o: IExample) {
o.func("a");
o.func("a", "b");
o.func("a", "b", "c");
...
}
3条答案
按热度按时间h43kikqp1#
TypeScript使用ECMAScript 6扩展方案,
http://wiki.ecmascript.org/doku.php?id=harmony:spread
但添加了类型注解,所以看起来像
gfttwv5a2#
为了补充chuck的答案,你不需要定义一个接口。您可以直接在方法中执行
...
:你可以称之为:
或者
ikfrs5lh3#
如果没有使用...args[]参数,Typescript仍然会在JavaScript中创建一个数组,并将参数复制到其中。
为了避免这种不必要的情况,你可以为函数和函数创建一个原型,这样: