Я постоянно сталкиваюсь с элегантным добавлением условных свойств к объекту, но всегда приходится делать следующее:

var a = {};
if (someCondition) {
    a.b = 5;
}

Извините, но меня это беспокоит!

Должен быть способ лучше, учитывая улучшения, внесенные ES6 в старый добрый объект? Оказывается, spread operator парень.

const a = {
  ...someCondition ? {b: 1} : {}
}

Теперь, если… someCondition = true мы получим a= {b: 1}

И если… someCondition = false мы получим только a= {}

Мы все еще можем улучшить это синтаксически, используя логический оператор И ...

const a = {
  ...someCondition && {b: 1}
}

Вот и все. При использовании оценки короткого замыкания {b: 1} будет распространяться на a, только если someCondition оценивается как true. Если someCondition равно false, возвращается someCondition, а значение false вообще не распространяется на a!