为什么我的扩展语法不能在节点v7.0.0中运行?

时间:2017-01-28 13:48:32

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

我正在尝试使用Object Spread语法,如下所示:

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

其中凭据是具有用户名和密码作为键和值的对象。但这会因SyntaxError: Unexpected token ...

而爆发

所以我必须设置带babel的节点才能工作吗?我认为现在已经内置了原生支持。

http://node.green/

我不能在没有Object.assign等的情况下使用它吗?

请有人澄清一下吗?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

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

console.log(credentialsWithAuth)