美文网首页
TS基础篇4:解构 与 展开

TS基础篇4:解构 与 展开

作者: 一眼就认出你 | 来源:发表于2018-09-09 21:18 被阅读0次

(一)解构数组

1、解构赋值

let input = [1, 2];
let [first, second] = input;

//相当于使用了索引
let first = input[0];
let second = input[1];

2、作用于函数参数

function f([first, second]: [number, number]) {
    console.log(first);
    console.log(second);
}
f(input);

3、...语法创建剩余变量

var testFun = function () {
    let [first, ...rest] = [1, 2, 3, 4];
    console.log(first);
    console.log(rest);
};
testFun();
输出:
1
[2, 3, 4]

~~由于是JavaScript, 你可以忽略你不关心的尾随元素或其它元素

let [first] = [1, 2, 3, 4];
console.log(first);      // 1
let [, second, , fourth] = [1, 2, 3, 4];   // 2  4

(二)解构对象

1、解构赋值
let o = {
    a: "foo",
    b: 12,
    c: "bar"
};
let { a, b } = o;

2、指定类型

let {a, b}: {a: string, b?: number} = o;
?:代表可选属性

3、使用 ...语法

let { a, ...passthrough } = o;
let total = passthrough.b + passthrough.c.length;

4、属性重命名

let { a: newName1, b: newName2 } = o;

5、函数声明

type C = { a: string, b: number }
function f({ a, b }: C): void {
    // ...
}


(三)展开数组

let first = [1, 2];
let second = [3, 4];
let bothPlus = [0, ...first, ...second, 5];

bothPlus的值为[0, 1, 2, 3, 4, 5]。 展开操作创建了 first和second的一份浅拷贝。

(四)展开对象

let defaults = { food: "spicy", price: "$$", ambiance: "noisy" };
let search = { ...defaults, food: "rich" };

search的值为{ food: "rich", price: "$$", ambiance: "noisy" }.
注意:展开是从左至右进行处理,但结果仍为对象。 这就意味着出现在展开对象后面的属性会覆盖前面的属性。

注意:对象展开还有其它一些意想不到的限制。

大体上是说当你展开一个对象实例时,你会丢失其方法。

class C {
  p = 12;
  m() {
  }
}
let c = new C();
let clone = { ...c };
clone.p; // ok
clone.m(); // error!

相关文章

  • TS基础篇4:解构 与 展开

    (一)解构数组 1、解构赋值 2、作用于函数参数 3、...语法创建剩余变量 ~~由于是JavaScript, 你...

  • 解构赋值

    解构赋值 数组的解构赋值 嵌套,默认值,展开符 对象的解构赋值 对象解构赋值的本质与简写 对象解构的模式与变量 对...

  • es6

    let && const 解构赋值&剩余运算符&展开 解构赋值 对象的解构赋值 剩余运算符 展开 Object.d...

  • JS-对象解构

    可从已知对象中解构所需的成员,与顺序无关,可使用展开语法(必须放最后)解构剩下的成员(仍然是对象) 可对解构成员使...

  • ES6总结

    let和const,var 模板字符串 例如: 3.对象的解构赋值: 4.展开操作符和 rest … 展开操作: ...

  • learning egret

    learning egret Index 1.js如何调用ts?2.ts如何调用js?3.egret基础4.Q&A...

  • 解构,...展开数组

    数组 对象 [...set(arr)]数组去重

  • 2020-05-07

    #2020/5/4到 2020/5/10 1、完成TS基础语法的学习 2、学会TS在react中如何使用(vue暂...

  • Es6 写法

    1、解构赋值 2、简写 3、...mapState 展开操作符 4、箭头函数 5、命名空间 6、模板语法 7、导出...

  • Typescript基础

    发表于 http://blog.poetries.top/2019/09/03/ts-in-action/ 基础篇...

网友评论

      本文标题:TS基础篇4:解构 与 展开

      本文链接:https://www.haomeiwen.com/subject/yfidgftx.html