2016-03-15 36 views

回答

7

这是TypeScript rest operator。在这种情况下,它意味着任何类型的任何数量的参数都可以在那里发生;该函数将把它们看作一个数组any。 (JavaScript的最近得到了休息和传播经营者,以及作为ES2015的,但在你的例子中,:any[]告诉我们,这是打字稿。)

如:

ngOnChanges('a', 42, null); 

...将显示

 
["a", 42, null] 

在控制台中。

这里有一个完整的示例(live copy):

function foo(...args:any[]) { 
    console.log("args.length = " + args.length); 
    args.forEach((arg:any, index:Number) => { 
     console.log("args[" + index + "]: " + arg); 
    }); 
} 
foo('a', 42, null); 

输出

 
args.length = 3 
args[0]: a 
args[1]: 42 
args[2]: null 
+0

感谢您的回答! – micronyks

3

其余参数语法允许我们将无限个参数表示为数组。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters

function(a, b, ...theArgs) { 
    // ... 
} 

如果函数的最后一个命名参数与...前缀,它成为一个数组,其从0元件theArgs.length由传递的实际提供参数到功能。

在上面的例子中,Args会收集函数的第三个参数(因为第一个参数映射到a,第二个参数b)以及所有连续的参数。

+0

感谢您的回答! – micronyks