TypeScript 2.1 brings us object rest & spread to easily destructure, make shallow copies and merge objects into new ones.
Create shallow copy of objects:
const names = {cat: 'Bob', dog: 'Fred', alligator: 'Benedict'};
const newNames = { ...names };
console.log(newNames.cat); // Bob
You can merge multiple objects into a new object:
const names1 = {cat: 'Bob'};
const names2 = {dog: 'Fred', alligator: 'Benedict'};
const newNames = { ...names1, ...names2 };
console.log(newNames.alligator); // Benedict
You can add new properties too, along with using a spread:
const names = {cat: 'Bob', dog: 'Fred', alligator: 'Benedict'};
const newNames = { ...names, hamster: 'Jude' };
console.log(newNames.hamster); // Jude
Note that if a property ends up being inserted multiple times, the last one in wins:
const names = {cat: 'Bob', dog: 'Fred', alligator: 'Benedict'};
const newNames = { dog: 'Skip', ...names };
console.log(newNames.dog); // Fred
Similar to what we can already do in pure JavaScript with object destructuring, rest brings us something that’s in the pipelines for ES2017:
const names = {cat: 'Bob', dog: 'Fred', alligator: 'Benedict'};
const { cat, ...otherAnimals } = names;
console.log(cat); // Bob
console.log(otherAnimals); // {dog: 'Fred', alligator: 'Benedict'}
Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in our Questions & Answers section, find tutorials and tools that will help you grow as a developer and scale your project or business, and subscribe to topics of interest.
Sign up