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'}