条件赋值和ECMAScript提出了对象扩展语法

ale*_*ngn 3 javascript ecmascript-next

我正在玩分配和建议的对象扩展语法,我想知道是否有办法只分配一个条件的东西?

例如,我目前有以下内容:

const requestHeaders = { ...headers };

if (accessToken) {
    requestHeaders.Authorization = `Bearer ${accessToken}`;
}

const h = {
    Accept: 'application/json',
    ...requestHeaders,
},
Run Code Online (Sandbox Code Playgroud)

我想用这样的东西简化它:

const requestHeaders = {
    ...headers, {
        Authorization: accessToken ? `Bearer ${accessToken}` : void 0, // I don't want Authorization to appear in the object if it's null or undefined, but this doesn't work
    }
};

const h = {
    Accept: 'application/json',
    ...requestHeaders,
},
Run Code Online (Sandbox Code Playgroud)

有没有办法有条件地为对象分配属性?

谢谢

log*_*yth 8

你可以使用这种风格

const requestHeaders = {
    ...headers,
    ...(accessToken ? {
        Authorization: `Bearer ${accessToken}`,
    } : {}),
};
Run Code Online (Sandbox Code Playgroud)

您可以使用所需的键扩展对象,也可以使用空对象.