ES2018 Spread operator object literals
Spread operator applied to object literals and not just arrays
const obj1 = {
"firstName": "James",
"lastName": "Holden"
}
const obj2 = {
...obj1,
"rank": "captain"
}
const addRank = true;
console.log(obj2); // { firstName: "James", lastName: "Holden", rank: "captain" }
console.log(...obj1, ...(addRank ? { rank: "Captain" } : {})); // { firstName: "James", lastName: "Holden", rank: "captain" }