Постоянно се сблъсквам с добавянето на условни свойства към обект по елегантен начин, но винаги трябва да направя:

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

Съжалявам, но това ме притеснява!

С подобренията, които ES6 донесе на добрия стар Object, трябва да има по-добър начин? Оказва се, че 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!