解构数组

  • 解构数组元素
let input = [1, 2];
let [first, second] = input;
console.log(first,second);
  • 交换值
[first, second] = [second, first];
  • 函数参数解构
function f([first, second]: [number, number]){
console.log(first,second);
} f([1,2]);
  • 剩余变量
let [first, ...rest] = [1,2,3,4];
console.log(first,rest);
  • 忽略尾随元素
let [first] = [1,2,3,4];
console.log(first);
  • 忽略其他元素
let [, second, , fourth] = [1,2,3,4];
console.log(second,fourth);

解构元组

  • 解构元组元素
let tuple: [number, string, boolean] = [7, "hello", true];
let [a, b, c] = tuple;
  • 剩余元素
let [a, ...bc] = tuple;
let [a,b,c, ...d] = tuple;
  • 忽略末尾元素或其他元素
let [a] = tuple;
let [, b] = tuple;

对象解构

  • 解构对象属性
let o = {
a: "foo",
b: 12,
c: "bar"
} let {a, b} = o;
  • 解构赋值
({a, b} = {a:"baz",b:101});
  • 剩余变量
let {a, ...passthrough} = o;
let total = passthrough.b + passthrough.c.length;
  • 解构属性重命名
let {a:newName1, b:newName2} = o;
  • 解构并指定类型
let {a, b}: {a:string, b:number} = o;
  • 解构并赋予默认值
function keepWholeObject(wholeObject: {a:string, b?:number}){
let {a,b = 1001} = wholeObject;
}

函数声明解构

  • 函数声明解构
type C = {a:string, b?: number}
function f({a,b}: C): void{
}
  • 指定默认值
function f({ a="", b = 0} = {} ): void{
} f(); function f({a,b = 0 } = {a: "" }): void {
}

展开数组

  • 数组元素展开
let first = [1, 2];
let second = [3, 4];
let bothPlus = [0, ...first, ...second, 5];
  • 对象展开
let defaults = {food: "spicy" ,price : "$$" , ambiance: "noisy" };
let search = {...defaults, food: "rich" };
  • 对象展开(但布包含方法)
class C {
p = 12;
m() {
}
} let c = new C();
let clone = {...c};
clone.p;
clone.m(); // error!

最新文章

  1. 精通Web Analytics 2.0 (9) 第七章:失败更快:爆发测试与实验的能量
  2. cocosstdio之字体之文本和FNT字体
  3. java写文件
  4. [CareerCup] 11.7 Tower of People in Circus 马戏团的人塔
  5. 多线程程序设计学习(5)balking模式和timed模式
  6. 关于路由、AP、交换机的小总结
  7. Red Hat Enterprise Linux x86-64 上安装 oracle 11gR2
  8. Flex入门(三)——微架构之Cairngorm
  9. 解决Sublime Text 3中文显示乱码(tab中文方块)问题,sublime tab乱码
  10. Ubuntu下如何解压各类文件
  11. 文本三剑客---sed 基础
  12. 【SSH系列】深入浅出spring IOC中三种依赖注入方式
  13. 第十四节,OpenCV学习(三)图像的阈值分割
  14. secureCRT保存屏幕输出内容
  15. UVa - 10341
  16. 12-简单认识下margin
  17. MyEclipse WebSphere开发教程:安装和更新WebSphere 6.1, JAX-WS, EJB 3.0(四)
  18. iOS Hardware Guide
  19. gvim中对变量的识别
  20. 【动态规划】bzoj3992 [Sdoi2015]序列统计 10分

热门文章

  1. EFCore代码实践
  2. 记一次错误排查,主要问题是跨平台文件中换行符(CRLF, LF)和垃圾字符( Caret Notation)
  3. 转 Java jar (SpringBoot Jar)转为win可执行的exe程序
  4. 第十九节:Asp.Net Core WebApi基础总结和请求方式
  5. (转)MySQL中char(36)被认为是GUID导致的BUG及解决方案
  6. 【BZOJ4016】[FJOI2014]最短路径树问题(点分治,最短路)
  7. 学习Linq之前必须知道的几种语法糖
  8. SQL Date 时间类型处理
  9. 添加shiv让所有现代浏览器都支持 HTML5 语义元素 html5.js让IE(包括IE6)支持HTML5元素方法
  10. css的尺寸、display的属性、以及浮动和清除浮动的方法