Il y a déjà beaucoup de fonctionnalités intéressantes dans ES6/ES7 pour définir des objets Javascript. Cependant, le modèle suivant est commun en Javascript:
const obj = {
requiredKey1: ...,
requiredKey2: ...
};
if (someCondition) {
obj.optionalKey1 = ...;
}
Existe-t-il un moyen de définir l'objet à la fois avec les clés optionnelles et obligatoires?
Vous pouvez utiliser propagation d'objet pour avoir une propriété facultative.
Remarque: Object Rest/Spread est une proposition de l'étape 4 pour ECMAScript. Vous pourriez avoir besoin de babel transform pour l'utiliser.
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);
Pour indiquer la touche optional
, vous pouvez lui affecter null
, si la condition est fausse
const someCondition = true;
const obj = {
requiredKey1: 1,
requiredKey2: 2,
optionalKey1: someCondition ? 'optional' : null
};
console.log(obj);
le modèle suivant est commun en Javascript
Ça ne devrait pas. Le fait d'avoir de nombreux objets de formes différentes peut entraîner une baisse des performances. Les enregistrements doivent toujours contenir les mêmes clés. Il suffit donc d'utiliser
const obj = {
requiredKey1: …,
requiredKey2: …,
optionalKey1: someCondition ? … : undefined,
};