TypeScript入门教程 之 点差算子/散布运算符/...运算符/剩余参数/...参数
TypeScript入门教程 之 点差算子/散布运算符/...运算符/剩余参数/...参数
点差算子/散布运算符
散布运算符的主要目标是散布数组或对象的元素。最好用示例说明。
应用
一个常见的用例是将数组散布到函数参数中。以前,您需要使用Function.prototype.apply
:
function foo(x, y, z) { }
var args = [0, 1, 2];
foo.apply(null, args);
现在,您只需在参数前面加上前缀即可,...
如下所示:
function foo(x, y, z) { }
var args = [0, 1, 2];
foo(...args);
在这里,我们将数组扩展args
为position arguments
。
解构
我们已经看到了这种在销毁中的用法:
var [x, y, ...remaining] = [1, 2, 3, 4];
console.log(x, y, remaining); // 1,2,[3,4]
这样做的动机是让您在分解时轻松捕获数组的其余元素。
阵列分配
扩展运算符使您可以轻松地将一个数组的扩展版本放置到另一个数组中。在下面的示例中对此进行了演示:
var list = [1, 2];
list = [...list, 3, 4];
console.log(list); // [1,2,3,4]
您可以将扩展数组放在任何位置,并获得预期的效果:
var list = [1, 2];
list = [0, ...list, 4];
console.log(list); // [0,1,2,4]
对象传播
您还可以将一个对象散布到另一个对象中。一个常见的用例是简单地向对象添加属性,而无需更改原始属性:
const point2D = {x: 1, y: 2};
/** Create a new object by using all the point2D props along with z */
const point3D = {...point2D, z: 3};
对于对象,价差的放置顺序很重要。它的工作方式类似于Object.assign
,并且执行您期望的工作:先出现的内容被后出现的内容“覆盖”:
const point2D = {x: 1, y: 2};
const anotherPoint3D = {x: 5, z: 4, ...point2D};
console.log(anotherPoint3D); // {x: 1, y: 2, z: 4}
const yetAnotherPoint3D = {...point2D, x: 5, z: 4}
console.log(yetAnotherPoint3D); // {x: 5, y: 2, z: 4}
另一个常见的用例是一个简单的浅扩展:
const foo = {a: 1, b: 2, c: 0};
const bar = {c: 1, d: 2};
/** Merge foo and bar */
const fooBar = {...foo, ...bar};
// fooBar is now {a: 1, b: 2, c: 1, d: 2}
剩余参数/...参数
剩余参数(由...argumentName
最后一个参数表示)使您可以快速接受函数中的多个参数并将它们作为数组获取。在下面的示例中对此进行了演示。
function iTakeItAll(first, second, ...allOthers) {console.log(allOthers);
}
iTakeItAll('foo', 'bar'); // []
iTakeItAll('foo', 'bar', 'bas', 'qux'); // ['bas','qux']
其余参数可以以任何功能可使用是它function
/ ()=>
/ class member
。
摘要
apply
是什么,你经常在JavaScript中使用,所以它的好,有更好的语法,你没有那个难看null
的this
说法。还具有用于将数组移出(解构)或移入(分配)其他数组的专用语法,为在部分数组上进行数组处理时提供了一种简洁的语法。
翻译来源:https://gitee.com/yunwisdoms/typescript-book/blob/master/docs/spread-operator.md
TypeScript入门教程 之 点差算子/散布运算符/...运算符/剩余参数/...参数相关推荐
- 我写的第一本书《TypeScript 入门教程》
阅读原文 持续了大半年的学习和写作,在今天终于告一段落了. 写书之旅 最初有写书的想法,是刚加入微软的时候. 由于工作中需要重度使用 TypeScript,所以我花了几天的时间研读了好几遍官方手册和中 ...
- TypeScript入门教程 之 classes-emit
TypeScript入门教程 之 classes-emit What's up with the IIFE 为该类生成的js可能是: function Point(x, y) {this.x = x; ...
- TypeScript入门教程 之 箭头函数
TypeScript入门教程 之 箭头函数 亲切地称为粗箭头(因为->是细箭头并且=>是粗箭头),也被称为lambda函数(由于其他语言).另一个常用功能是胖箭头功能()=>some ...
- TypeScript入门教程 之 类/抽象类/构造器/Getter/Setter
TypeScript入门教程 之 类/抽象类/构造器/Getter/Setter 将JavaScript中的类作为头等项很重要的原因是: 类提供了有用的结构抽象 为开发人员提供一种一致的方式来使用类, ...
- TypeScript入门教程 之 const
TypeScript入门教程 之 const const是ES6 / TypeScript提供的非常受欢迎的功能.它使您可以与变量保持不变.从文档以及运行时的角度来看,这都是很好的.要使用const只 ...
- TypeScript入门教程 之 解构
TypeScript入门教程 之 解构 TypeScript支持以下形式的解构(以解构的名义命名,即分解结构): 对象分解 阵列解构 人们很容易将解构视为结构的逆.JavaScript中的结构化方法是 ...
- TypeScript入门教程 之 枚举 Enums
TypeScript入门教程 之 枚举 Enums 枚举是一种组织相关值集合的方法.许多其他编程语言(C / C#/ Java)具有enum数据类型,而JavaScript没有.但是,TypeScri ...
- TypeScript入门教程 之 for ... of 与 for ... in
TypeScript入门教程 之 for ... of 与 for ... in 新手JavaScript开发人员经常遇到的错误是,for...in数组不会遍历数组项.相反,它迭代传入的对象的键.下面 ...
- TypeScript入门教程 之 生成器函数
TypeScript入门教程 之 生成器函数 生成器函数 function *是用于创建生成器函数的语法.调用generator函数将返回一个generator对象.发电机对象如下刚刚所述迭代器接口( ...
最新文章
- 入职阿里啦!java面试技巧之不要给自己挖坑实战干货
- sphinx+coreseek+php扩展--用php程序实现中文拆词
- 关于pycharm+opencv没有代码提示的问题解决方法记录
- Lucene提供的条件判断查询[转]
- 同步,异步,阻塞,非阻塞?
- 使用 Apache 来限制访问 Confluence 6 的管理员界面
- 【Multisim】关于Multisim仿真“过零比较器”出现的问题以及解决方法
- 微信扫码支付、聚合支付
- SqlParameter的使用
- 洛谷刷题笔记——P3953 [NOIP2017 提高组] 逛公园
- purifier用来过滤危险的标签xss
- 如何删除电脑计算机用户名和密码,如何删除电脑设置的密码
- 使用Python对淘宝用户行为进行数据分析
- c语言51单片机湿度浇花器,基于51单片机的室内自动浇花系统的制作方法
- SPSS纵向数据格式转换为横向数据格式时变量不是自己想要
- sap 为什么创建的利润中心组不能使用_定义利润中心(Profit Center)
- 多线程之interrupt
- 王爽《汇编语言》实验1笔记与实验任务
- ssm 一对多的映射关系
- 互联网应用的架构演变之路