我不知道这个语法或符号是否属于Angular2
或其他什么......
但我不知道,
...
语法是什么以及它如何在幕后工作?
ngOnChanges(...args:any[])
{
console.log(args);
}
答案 0 :(得分:7)
这是TypeScript rest operator。在这种情况下,它意味着任何类型的任何类型的参数都可以在那里出现;该函数将它们视为any
的数组。 (从ES2015开始,JavaScript最近得到了休息和传播运算符,但是你的例子中的:any[]
告诉我们这是TypeScript。)
E.g:
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
答案 1 :(得分:3)
rest参数语法允许我们将无限数量的参数表示为数组。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters
function(a, b, ...theArgs) {
// ...
}
如果函数的最后一个命名参数以...为前缀,它将成为一个数组,其元素从0到theArgs.length由传递给函数的实际参数提供。
在上面的例子中,theArgs将收集函数的第三个参数(因为第一个参数映射到a,第二个映射到b)和所有连续参数。
答案 2 :(得分:1)
这是ES2015传播运算符(或省略号运算符)。这允许解构数组。
例如:
function myFunction(x, y, z) {
// x = 0, y = 1, z = 2
}
var args = [0, 1, 2];
myFunction(...args);
有关详细信息,请参阅此链接: