什么是...语法? (在Angular2中找到)

时间:2016-03-15 10:11:31

标签: angular

我不知道这个语法或符号是否属于Angular2或其他什么......

但我不知道,

... 语法是什么以及它如何在幕后工作?

ngOnChanges(...args:any[])
{
   console.log(args);
}

3 个答案:

答案 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);

有关详细信息,请参阅此链接: