TypeScript 中的对象休息和扩展

TypeScript 2.1 给我们带来了对象休息和扩散,以便轻松破坏,创建浅副本,并将对象合并为新的。

物体传播

创建对象的浅副本:

1const names = {cat: 'Bob', dog: 'Fred', alligator: 'Benedict'};
2
3const newNames = { ...names };
4
5console.log(newNames.cat); // Bob

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

1const names1 = {cat: 'Bob'};
2const names2 = {dog: 'Fred', alligator: 'Benedict'};
3
4const newNames = { ...names1, ...names2 };
5
6console.log(newNames.alligator); // Benedict

您也可以添加新的属性,并使用扩散:

1const names = {cat: 'Bob', dog: 'Fred', alligator: 'Benedict'};
2
3const newNames = { ...names, hamster: 'Jude' };
4
5console.log(newNames.hamster); // Jude

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

1const names = {cat: 'Bob', dog: 'Fred', alligator: 'Benedict'};
2
3const newNames = { dog: 'Skip', ...names };
4
5console.log(newNames.dog); // Fred

客体休息

类似于我们已经可以在纯 JavaScript 中使用 object destructuring做的事情,休息为我们带来了ES2017的管道:

1const names = {cat: 'Bob', dog: 'Fred', alligator: 'Benedict'};
2
3const { cat, ...otherAnimals } = names;
4
5console.log(cat); // Bob
6console.log(otherAnimals); // {dog: 'Fred', alligator: 'Benedict'}
Published At
Categories with 技术
Tagged with
comments powered by Disqus