Typescript 解构 、展开
什么是解构、展开?
展开与解构作用相反,简单来说:
解构:解构赋值允许你使用数组或对象字面量的语法,将数组和对象的属性付给各种变量。
展开:允许你讲一个数组展开为另一个数组,或一个对象展开为另一个对象。
数组解构
// 1.数组元素的赋值-JavaScript语法
var first=someArray[0];
var second=someArray[1];
var third=someArray[2]; // 2.对比一下TypeScript、ES6提供简介、高效、可读的解构语法
var [first,second,third]=someArray; // 3. 对任意深度的嵌套数组进行解构
var [foo,[[bar],baz]]=[1,[[2],3]];
console.log(foo);//
console.log(bar);//
console.log(baz);// // 4.忽略尾随元素
let [first]=[1,2,3,4];
console.log(first);// // 5 .忽略部分元素
let [,second,,forth]=[1,2,3,4];
console.log(second);//
console.log(forth);//对象解构
// 1. 解构对象
let o={
a:'foo',
b:12,
c:'bar'
};
let {a,b}=o; // 2. 没有声明的赋值
({a,b}={a:'foo',b:12,c:'bar'});//注意此处,需要用括号括起来,因为javascript通常会以{起始的语句作为一个代码块。 // 3.对象里面可以使用 ... 语法创建剩余变量
let {a,...passthrough}=o;
let total=passthrough.b+passthrough.c.length; // 4. 属性重命名
let {a:newName1,b:newName2}=o; //a:newName1读作“a作为newName1”,等价于一下写法:
let newName1=o.a;
let newName2=o.b; // 5. 指定类型
let {a,b}:{a:string,b:number}=o; // 6 .指定默认值(即使b为udefined,obj的属性a,b也都会有值)
function keepWhole(obj:{a:string,b?:number}{
let {a,b=1001}=obj;
});展开
// 1. 数组展开
let first=[1,2];
let second=[3,4];
let all=[0,...first,...second,5];
console.log(all);//0,1,2,3,4,5 // 2. 对象展开(属性值覆盖)
let default={ food:'spicy',price:'$',drink:'coko'};
let search={...default,food:'rich'};
console.log(search);//{food:'rich',price:'$',drink:'coko'} // 3.对象展开:它只包含自身的可枚举的属性。 并且会丢失展开对象的方法:
class C={p:12,m(){}};
let c=new C();
let clone={...c};
console.log(clone.p);//
console.log(clone.m);//error!
___end
Typescript 解构 、展开的更多相关文章
- TypeScript 解构和展开
解构数组 解构数组元素 let input = [1, 2]; let [first, second] = input; console.log(first,second); 交换值 [first, ...
- TypeScript 解构
⒈解构数组 最简单的解构莫过于数组的解构赋值了: let input = [1, 2]; let [first, second] = input; console.log(first); // out ...
- TypeScript笔记 5--变量声明(解构和展开)
解构是什么 解构(destructuring assignment)是一种表达式,将数组或者对象中的数据赋给另一变量. 在开发过程中,我们经常遇到这样问题,需要将对象某个属性的值赋给其它两个变量.代码 ...
- Typescript中一些不理解的概念解释(泛型、断言、解构、枚举)
新的项目想使用typescript,因此又对其概念及使用过一遍,本文主要记录下对之前一些概念不太理解的地方. 1.泛型 定义: 在定义函数.接口或者类的时候,不预先指定具体的类型,而是在使用的时候再指 ...
- TS学习之解构与展开
一.解构 1.解构数组 let input = [1, 2]; let [first, second] = input; console.log(first); // outputs 1 consol ...
- 变量声明---let,const,解构
let在很多方面与var是相似的,但是可以帮助大家避免在JavaScript里常见一些问题. const是对let的一个增强,它能阻止对一个变量再次赋值. 块作用域 当用let声明一个变量,它使用的是 ...
- 豪情-CSS解构系列之-新浪页面解构-01
目录: 一. 新浪的布局特点 二. 内容细节的特点 三. 其中相关的一些基础技术点 1. 常见布局方法 2. 布局要点 3. Debugger误区 4.列表 5.字体颜色 6.CSS选择符 7.CSS ...
- ES6新特性-------解构、参数、模块和记号(续)
六.解构 解构提供了一个方便的地从对象或数组中提取数据的方法,请看下面的例子: //ES6 let [x,y]=[1,2];//x=1,y=2 //ES5 var arr=[1,2]; var x=a ...
- 前端笔记之ES678&Webpack&Babel(上)初识ES678&Babel&let和const&解构&语法
一.ES版本简介和调试运行方法 1.1 ECMAScript简介 MDN手册:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript JavaS ...
随机推荐
- memcache与mysql的连接
MySQL官方在5.6版本以上有一个与memcache连接的插件,名字叫做innodb_memcache. 1),没有安装过MySQL的,可以在CMAKE的时候加入:-DWITH_INNODB_MEM ...
- [leetcode-541-Reverse String II]
Given a string and an integer k, you need to reverse the first k characters for every 2k characters ...
- 如何连接新浪sae共享数据库
网上找了很久,太杂了,下文介绍如何连接新浪sae共享数据库,方便有效 1.首先贴出官方文档: 以下是一些和共享MySQL数据库服务相关的预定义常量,你可以直接引用这些参数来连接数据库: 用户名 : S ...
- 一篇文章学懂Shell脚本
Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合.Shell可以直接使用在win/Unix/Linux上面, ...
- date时间转换
<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/h ...
- Ionic/Angularjs 知识点解析
Ionic/Angularjs 知识点解析 angular-ui-router(状态跳转) state的定义:(在app.js的config下配置) $stateProvider .state('ap ...
- Oracle11g 创建表空间、创建用户、角色授权、导入导出表以及中文字符乱码问题
前提:本机已经安装了Oracle11g数据库. 需求:使用PL SQL数据库连接工具操作Oracle数据库 一.创建表空间和用户 想要操作数据库,首先需要创建用户并给用户授予权限:在创建用户 ...
- python编程快速上手之第5章实践项目参考答案
#!/usr/bin/env python3.5 # coding:utf-8 # 5.6.1 # 好玩游戏的物品清单 # 给定一个字典,包含物品名称和数量,并打印出数量对应的物品 dict_stuf ...
- 如何在一个Eclipse同时启动两个Tomcat
比如:有两个版本的tomcat,一个5.*,一个6.*,此时由于两个工程分别部署在两个版本的tomcat下,需要同时启动两个tomcat,以下是方法: 1.特别要注意: 不要设置CATALINA_HO ...
- Linux服务器学习(一)
一.首先连接服务器 下载一个windows下连接linux的ssh工具,我这里用的putty.一次填入HostName(主机名,可以是服务器域名也可以是对应的ip).Port(端口号默认为22).Co ...