Ya hay muchas funciones geniales en ES6/ES7 para definir objetos Javascript. Sin embargo, el siguiente patrón es común en Javascript:
const obj = { requiredKey1: ..., requiredKey2: ... }; if (someCondition) { obj.optionalKey1 = ...; }¿Hay alguna manera de definir el objeto de una vez con las claves opcionales y requeridas?
Puede usar la distribución de objetos para tener una propiedad opcional:
let flag1 = true; let flag2 = false; const obj = { requiredKey1: 1, requiredKey2: 2, ...(flag1 && { optionalKey1: 5 }), ...(flag2 && { optionalKey2: 6, optionalKey3: 7 }), ...(flag1 && { optionalKey4: 8, optionalKey5: 9 }) }; console.log(obj);Para indicar una clave optional , puede asignarle null , si la condición es falsa
const someCondition = true; const obj = { requiredKey1: 1, requiredKey2: 2, optionalKey1: someCondition ? 'optional' : null }; console.log(obj);el siguiente patrón es común en Javascript
No debería. Tener muchos objetos de diferentes formas puede incurrir en una penalización de rendimiento. Los registros siempre deben contener las mismas claves. Así que solo usa
const obj = { requiredKey1: …, requiredKey2: …, optionalKey1: someCondition ? … : undefined, };