javascript - 条件赋值和 ECMAScript 提议的对象扩展语法

标签 javascript ecmascript-next

我正在研究赋值和提议的对象传播语法,我想知道是否有一种方法可以只根据条件赋值?

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

const requestHeaders = { ...headers };

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

const h = {
    Accept: 'application/json',
    ...requestHeaders,
},

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

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,
},

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

谢谢

最佳答案

你可以使用这种风格

const requestHeaders = {
    ...headers,
    ...(accessToken ? {
        Authorization: `Bearer ${accessToken}`,
    } : {}),
};

您可以在其中使用您想要的键传播一个对象,也可以传播一个空对象。

关于javascript - 条件赋值和 ECMAScript 提议的对象扩展语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40458697/

相关文章:

javascript - 如何在 Angular 中对组件进行单元测试?

Javascript 将函数绑定(bind)到对象

javascript - 用于构建堆积面积图的免费 JavaScript/jQuery 库

javascript - 将 DropTarget 装饰器转换为 ES6

javascript - JavaScript 中的命名和未命名函数

javascript - 导入/导出名称冲突解决

javascript - 在 redux 中使用装饰器连接多个 reducer

javascript - ES6 类 : how to omit "this" keyword

javascript - 在 ES2015 中,如何确保所有方法都等待对象初始化?使用 ES7 装饰器?

javascript - 我可以在不注销的情况下获得更新的 emailVerified 吗?