TypeScript中的对象休息和传播

来自菜鸟教程
跳转至:导航、​搜索

TypeScript 2.1 为我们带来了对象休息和传播,以轻松解构、制作浅拷贝并将对象合并到新对象中。

对象传播

创建对象的浅拷贝:

const names = {cat: 'Bob', dog: 'Fred', alligator: 'Benedict'};

const newNames = { ...names };

console.log(newNames.cat); // Bob

您可以将多个对象合并为一个新对象:

const names1 = {cat: 'Bob'};
const names2 = {dog: 'Fred', alligator: 'Benedict'};

const newNames = { ...names1, ...names2 };

console.log(newNames.alligator); // Benedict

您也可以添加新属性,以及使用传播:

const names = {cat: 'Bob', dog: 'Fred', alligator: 'Benedict'};

const newNames = { ...names, hamster: 'Jude' };

console.log(newNames.hamster); // Jude

请注意,如果一个属性最终被多次插入,则最后一个获胜:

const names = {cat: 'Bob', dog: 'Fred', alligator: 'Benedict'};

const newNames = { dog: 'Skip', ...names };

console.log(newNames.dog); // Fred

对象休息

类似于我们已经在纯 JavaScript 中使用 object destructuring 所做的事情,rest 为我们带来了 ES2017 管道中的一些东西:

const names = {cat: 'Bob', dog: 'Fred', alligator: 'Benedict'};

const { cat, ...otherAnimals } = names;

console.log(cat); // Bob
console.log(otherAnimals); // {dog: 'Fred', alligator: 'Benedict'}