blog

View the Project on GitHub micahriggan/blog

Javascript Property Wizardry

Did you know you can add properties conditionally to an object with spread?

so instead of

function getUser(banned) {
  const userStatus = {banned, banReason: 'Wizard'};
  // only combine the user status if the user is banned
  const user = { name: 'Micah' };
  if(userStatus.banned) {
    Object.assign(user, userStatus);
  }
   return user;
}


console.log(getUser(true));
console.log(getUser(false));

you can do

function getUser(banned) {
  const userStatus = {banned, banReason: 'Wizard'};
  // only combine the user status if the user is banned
   return {
    name: 'Micah',
    ...userStatus.banned && userStatus,
  }
}


console.log(getUser(true));
console.log(getUser(false));

Outputs

{ name: 'Micah', banned: true, banReason: 'Wizard' }
{ name: 'Micah' }

Neat!