@babel/plugin-proposal-object-rest-spread

2023-06-09 17:26 更新
NOTE: This plugin is included in @babel/preset-env, in ES2018

Example?

Rest Properties?

JavaScript

let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
console.log(x); // 1
console.log(y); // 2
console.log(z); // { a: 3, b: 4 }

Spread Properties?

JavaScript

let n = { x, y, ...z };
console.log(n); // { x: 1, y: 2, a: 3, b: 4 }

Installation?

  • npm
  • Yarn
  • pnpm
pnpm add --save-dev @babel/plugin-proposal-object-rest-spread

Usage?

With a configuration file (Recommended)?

babel.config.json

{
"plugins": ["@babel/plugin-proposal-object-rest-spread"]
}

Via CLI?

Shell

babel --plugins @babel/plugin-proposal-object-rest-spread script.js

Via Node API?

JavaScript

require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-proposal-object-rest-spread"],
});

Options?

By default, this plugin will produce spec compliant code by using Babel's objectSpread helper.

loose?

boolean, defaults to false.

Enabling this option will use Babel's extends helper, which is basically the same as Object.assign (see useBuiltIns below to use it directly).

?? Consider migrating to the top level setSpreadProperties assumption.

babel.config.json

{
"assumptions": {
"setSpreadProperties": true
}
}

Please keep in mind that even if they're almost equivalent, there's an important difference between spread and Object.assign: spread defines new properties, while Object.assign() sets them, so using this mode might produce unexpected results in some cases.

For detailed information please check out Spread VS. Object.assign and Assigning VS. defining properties.

useBuiltIns?

boolean, defaults to false.

Enabling this option will use Object.assign directly instead of the Babel's extends helper.

Example?

.babelrc

JSON

{
"assumptions": {
"setSpreadProperties": true
},
"plugins": [
["@babel/plugin-proposal-object-rest-spread", { "useBuiltIns": true }]
]
}

In

JavaScript

z = { x, ...y };

Out

JavaScript

z = Object.assign({ x }, y);
You can read more about configuring plugin options here

References?


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號