And*_*Mao 29 javascript ecmascript-6 ecmascript-7 ecmascript-next
ES6/ES7 中已经有很多很酷的功能来定义Javascript对象.但是,以下模式在Javascript中很常见:
const obj = {
requiredKey1: ...,
requiredKey2: ...
};
if (someCondition) {
obj.optionalKey1 = ...;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法用可选键和必需键同时定义对象?
Ori*_*ori 71
您可以使用对象传播来拥有可选属性.
注意: Object Rest/Spread是ECMAScript的第4阶段提案.您可能需要使用babel变换来使用它.
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);Run Code Online (Sandbox Code Playgroud)
要指示optional键,您可以分配给它null,如果条件为假
const someCondition = true;
const obj = {
requiredKey1: 1,
requiredKey2: 2,
optionalKey1: someCondition ? 'optional' : null
};
console.log(obj);Run Code Online (Sandbox Code Playgroud)