TypeScript 解构和展开

解构数组

  • 解构数组元素
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!

原文地址:https://www.cnblogs.com/baiqian/p/12080323.html

时间: 2024-10-09 05:23:46

TypeScript 解构和展开的相关文章

TypeScript 解构

⒈解构数组 最简单的解构莫过于数组的解构赋值了: let input = [1, 2]; let [first, second] = input; console.log(first); // outputs 1 console.log(second); // outputs 2 这创建了2个命名变量 first 和 second. 等价于下面使用了索引的代码,但更为方便: first = input[0]; second = input[1]; 解构作用于已声明的变量会更好: // swap

004--TypeScript变量声明之解构展开

1.解构 解构分为数组解构和对象解构 let input = [1,2] let [first,second] = input //上述写法相当于 // let first = input[0] // let second = input[1] let input: [number,number] = [1,2] function f([first,second]: [number,number]){ console.log(first) console.log(second) } f(inpu

解构、参数、模块和记号

解构.参数.模块和记号(续) 六.解构 解构提供了一个方便的地从对象或数组中提取数据的方法,请看下面的例子: 1 2 3 4 5 6 7 //ES6 let [x,y]=[1,2];//x=1,y=2 //ES5 var arr=[1,2]; var x=arr[0]; var y=arr[1]; 使用这个语法,可以一次性给多个变量赋值.一个很好的附加用处是可以很简单的交换变量值: 1 2 3 let x=1,y=2; [x,y]=[y,x];x=2 y=1 解构也可以用于对象,注意对象中必须存

妙用ES6解构和扩展运算符让你的代码更优雅

Javascript ES6/ES2015尘埃落定,其中许多特性其实是为了简化代码.解构运算符,扩展运算符,和rest运算符就是其中很好的特性,它们可以通过减少赋值语句的使用,或者减少通过下标访问数组或对象的方式,使代码更加简洁优雅,可读性更佳.现在各浏览器及node.js都加快了部署ES6的步伐.ES6的学习正当其时. 解构 解构的作用是可以快速取得数组或对象当中的元素或属性,而无需使用arr[x]或者obj[key]等传统方式进行赋值 数组解构赋值: var arr = ['this is

ES6新特性-------解构、参数、模块和记号(续)

六.解构 解构提供了一个方便的地从对象或数组中提取数据的方法,请看下面的例子: //ES6 let [x,y]=[1,2];//x=1,y=2 //ES5 var arr=[1,2]; var x=arr[0]; var y=arr[1]; 使用这个语法,可以一次性给多个变量赋值.一个很好的附加用处是可以很简单的交换变量值: let x=1,y=2; [x,y]=[y,x];x=2 y=1 解构也可以用于对象,注意对象中必须存在的对应的键: let obj={x:1,y:2}; let {x,y

解构赋值的用法。

按照一定模式,从数组和对象中提取,对变量进行赋值,称为解构 通过解构我们可以让赋值更优雅便捷 // 一般赋值 var a = 1, b = 2, c = 3; //解构赋值 var [a, b, c] = [1, 2, 3]; 当然不仅仅是var,let和const也可以 let arr = [1, 2, 3] const [a, b, c] = arr; 语法本质 实质上这个语法就是一种模式匹配 如果等号两边模式相同 左边变量就会被赋予相应值 所以下面的形式也可以正常赋值 var [a, [b

ES6 的解构赋值前每次都创建一个对象吗?会加重 GC 的负担吗?

本文来源于知乎上的一个提问. 为了程序的易读性,我们会使用 ES6 的解构赋值: function f({a,b}){} f({a:1,b:2}); 这个例子的函数调用中,会真的产生一个对象吗?如果会,那大量的函数调用会白白生成很多有待 GC 释放的临时对象,那么就意味着在函数参数少时,还是需要尽量避免采用解构传参,而使用传统的: function f(a,b){} f(1,2); 上面的描述其实同时提了好几个问题: 会不会产生一个对象? 参数少时,是否需要尽量避免采用解构传参? 对性能(CPU

简单看看es6解构赋值

哎,我真的是太难了,今天就被这个解构赋值(也可以叫做析构,貌似析构是在c++中的,所以我这里叫做解构赋值吧)弄的我很烦,本来以为很容易的,结果还是弄了好久...就总结一下解构吧! 1.解构的基本使用 什么叫做解构呢?其实就是类似正则表达式的这么一个东西,就是用一个有规则的表达式去匹配一个对象,这个表达式中刚好有一些属性,只要是匹配到了的东西都会自动赋值给这些属性,然后这个属性我们就可以随便使用了,所以通用的写法应该是下面这个样子的(这里是对象类型的解构,对于数组类型的解构比较容易,不多说,自己查

JS的对象、数组等处理方法:解构

对象方法简写 你可以在定义方法时省略function和 :: const obj = { insteadOfThis: function() { // do stuff }, youCanDoThis() { // do stuff } } 请注意,以上不是箭头函数,只是对象方法的简写语法. 解构对象 对象解构是获取对象并将其内部属性提取到对象外部变量的一种方法: const obj = { x: 1, y: 2 } // 不使用解构语法 const x = obj.x const y = ob