JavaScript ES6 中的纯函数

Pure Functions In JavaScript ES6

由于某些未知原因,我无法让对象传播在我的代码中工作。我不得不求助于 'Object.assign()',但宁愿使用“...”

以下作品:

const frederick = {
  name: 'Frederick Douglass',
  canRead: false,
  canWrite: false
};

// create new object and mutate that one
const selfEducate = person =>
  Object.assign({}, person,
    {canRead:true},
    {canWrite:true}
  );

console.log(selfEducate(frederick));  // { name: 'Frederick Douglass', canRead: true, canWrite: true }
console.log(frederick);  // { name: 'Frederick Douglass', canRead: false, canWrite: false }

但是,以下情况不会:

const frederick = {
  name: 'Frederick Douglass',
  canRead: false,
  canWrite: false
};

const selfEducate = person =>
  ({
    ...person,
    canRead: true,
    canWrite: true
  });

console.log(selfEducate(frederick));
console.log(frederick);

那个错误是:

SyntaxError: Unexpected token ...

展开运算符在我的其他涉及复制数组的代码中确实有效,但在此示例中无效。如有任何反馈,我们将不胜感激。

如果您的代码的其他部分正在对数组使用扩展运算符,这与尝试扩展对象文字不同。

有规范的提案,例如 here

请尝试以下步骤。

安装

npm install --save-dev babel-plugin-transform-object-rest-spread

在现有预设中的使用

"plugins": ["transform-object-rest-spread"]

参考link:Click here

注意:对象传播运算符不是默认功能。它需要如上所述的转译器。