🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# TypeScript 中的展开运算符 > 原文: [https://howtodoinjava.com/typescript/spread-operator/](https://howtodoinjava.com/typescript/spread-operator/) 在 TypeScript 中,可以使用展开运算符(以省略号的形式)来初始化另一个数组或对象中的数组和对象。 您还可以使用展开运算符进行对象分解。 ## 展开运算符与`apply()`方法 JavaScript 的`apply()`方法调用具有给定`this`值的函数,并以`array`提供参数。 例如,在下面的示例中,两个突出显示的函数调用是等效的。 它们都打印相同的输出。 ```java var numbers = [1, 2, 3, 4, 5]; console.log.apply(console, numbers); //1 2 3 4 5 console.log("1", "2", "3", "4", "5"); //1 2 3 4 5 ``` 展开运算符(ECMAScript 6 的一部分)是`apply()`方法的更好版本。 使用展开运算符,您可以像上面这样写上面的语句。 ```java var numbers = [1, 2, 3, 4, 5]; console.log(...argsArray); //1 2 3 4 5 ``` ## 展开运算符示例 1. #### 从另一个数组初始化数组 您可以使用展开运算符以给定的方式从现有数组创建数组。 ```java let origArrayOne = [ 1, 2, 3]; //1,2,3 let origArrayTwo = [ 4, 5, 6]; //4,5,6 //Create new array from existing array let copyArray = [...origArrayOne]; //1,2,3 //Create new array from existing array + more elements let newArray = [...origArrayOne, 7, 8]; //1,2,3,7,8 //Create array by merging two arrays let mergedArray = [...origArrayOne, ...origArrayTwo]; //1,2,3,4,5,6 ``` 2. #### 从另一个对象初始化对象 您还可以使用展开运算符以给定的方式从现有对象创建对象。 ```java let origObjectOne = {a: 1, b: 2, c: 3}; //{a: 1, b: 2, c: 3} let origObjectTwo = {d: 4, e: 5, f: 6}; //{d: 4, e: 5, f: 6} //Create new object from existing object let copyObject = {...origObjectOne}; //{a: 1, b: 2, c: 3} //Create new object from existing object + more elements let newObject = {...origObjectOne, g: 7, h: 8}; //{a: 1, b: 2, c: 3, g: 7, h: 8} //Create object by merging two objects let mergedObject = {...origObjectOne, ...origObjectTwo}; //{a: 1, b: 2, c: 3, d: 4, e: 5, f: 6} ``` 3. #### 对象解构 *解构赋值*语法是一个 JavaScript 表达式,可以将数组中的值或对象中的属性解压缩为不同的变量。 ```java function myFunction(x, y, z) { console.log( x ); console.log( y ); console.log( z ); } var parametersArray = [0, 1, 2]; myFunction(...parametersArray); //0, 1, 2 ``` 将我的问题放在评论部分。 学习愉快! 参考: [Mozilla Docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax)