@babel/plugin-transform-object-rest-spread
非官方测试版翻译
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
信息
该插件已包含在 @babel/preset-env 中,属于 ES2018 标准
示例
剩余属性
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 }
扩展属性
JavaScript
let n = { x, y, ...z };
console.log(n); // { x: 1, y: 2, a: 3, b: 4 }
安装
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev @babel/plugin-transform-object-rest-spread
yarn add --dev @babel/plugin-transform-object-rest-spread
pnpm add --save-dev @babel/plugin-transform-object-rest-spread
bun add --dev @babel/plugin-transform-object-rest-spread
用法
通过配置文件(推荐)
babel.config.json
{
"plugins": ["@babel/plugin-transform-object-rest-spread"]
}
通过命令行
Shell
babel --plugins @babel/plugin-transform-object-rest-spread script.js
通过 Node API
JavaScript
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-object-rest-spread"],
});
配置选项
默认情况下,该插件会使用 Babel 的 objectSpread 辅助函数生成符合规范的代码。
loose
boolean,默认值 false
启用此选项将使用 Babel 的 extends 辅助函数,该函数基本等同于 Object.assign(如需直接使用它,请参阅下方的 useBuiltIns 选项)。
注意
请考虑迁移至顶层 setSpreadProperties 假设。
babel.config.json
{
"assumptions": {
"setSpreadProperties": true
}
}
请注意,尽管两者几乎等效,但扩展运算符与 Object.assign 之间存在重要区别:扩展运算符会_定义_新属性,而 Object.assign() 则是_设置_属性,因此使用此模式在某些情况下可能产生意外结果。
详细信息请查阅 扩展运算符 VS. Object.assign 和 设置属性 VS. 定义属性。
useBuiltIns
boolean,默认值 false
启用此选项将直接使用 Object.assign 替代 Babel 的 extends 辅助函数。
示例
.babelrc
JSON
{
"assumptions": {
"setSpreadProperties": true
},
"plugins": [
["@babel/plugin-transform-object-rest-spread", { "useBuiltIns": true }]
]
}
输入
JavaScript
z = { x, ...y };
输出
JavaScript
z = Object.assign({ x }, y);
提示
你可以在此处阅读更多关于配置插件选项的信息。