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