【问题标题】:Why isn't my spread syntax working in node v7.0.0?为什么我的扩展语法在节点 v7.0.0 中不起作用?
【发布时间】:2017-06-14 02:41:41
【问题描述】:

我正在尝试像这样使用 Object Spread 语法:

let credentialsWithAuth =  { ...credentials, type: 'basic' }

其中的凭据是一个以用户名和密码作为键和值的对象。但是SyntaxError: Unexpected token ...

那么我是否必须使用 babel 设置节点才能使其工作?我认为现在内置了原生支持。

http://node.green/

如果没有Object.assign 等,我不能使用它吗?

有人可以澄清一下吗?

【问题讨论】:

  • 这是否可以在没有 Babel 的 vanilla Node 上工作?
  • 是的,这就是我看到node.green后想知道的原因@
  • 根据this 的回答,Object spread 还不是ECMAscript 的官方实现。仅适用于数组传播。例如,这将起作用:credentials = [1,2]; [...credentials, 3]。不幸的是,您将不得不选择babelObject.assign
  • 请注意,扩展运算符只能应用于可迭代对象:来自 msdn

标签: javascript node.js ecmascript-6 spread-syntax


【解决方案1】:

节点 7.0 中可用的传播语法不处理对象的传播属性。您正在寻找的是object spread syntax,它目前处于 TC39 流程的第 3 阶段。您可以在process document 中找到有关该过程的更多信息,在its repository 中找到有关提案的信息。

【讨论】:

【解决方案2】:

是的,它仅在 node_8x 及更高版本中受支持。然而,使用Object.assign()(不会覆盖源对象)的正确等价物是:

let credentials = { username : 'test', password: 'test' }
let credentialsWithAuth = Object.assign({}, { type: 'basic' }, credentials)

console.log(credentialsWithAuth)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 2017-06-19
    • 2021-05-06
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多