@babel/plugin-transform-object-rest-spread
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Este plugin está incluido en @babel/preset-env, en ES2018
Ejemplo
Propiedades Rest
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 }
Propiedades Spread
let n = { x, y, ...z };
console.log(n); // { x: 1, y: 2, a: 3, b: 4 }
Instalación
- 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
Uso
Mediante un archivo de configuración (Recomendado)
{
"plugins": ["@babel/plugin-transform-object-rest-spread"]
}
Mediante la CLI
babel --plugins @babel/plugin-transform-object-rest-spread script.js
Mediante la API de Node
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-object-rest-spread"],
});
Opciones
Por defecto, este plugin produce código conforme a la especificación utilizando el helper objectSpread de Babel.
loose
boolean, valor predeterminado: false.
Habilitar esta opción utilizará el helper extends de Babel, que es básicamente equivalente a Object.assign (consulte useBuiltIns más abajo para usarlo directamente).
Considere migrar al supuesto de alto nivel setSpreadProperties.
{
"assumptions": {
"setSpreadProperties": true
}
}
Tenga en cuenta que aunque son casi equivalentes, existe una diferencia importante entre spread y Object.assign: spread define nuevas propiedades, mientras que Object.assign() las asigna, por lo que usar este modo podría producir resultados inesperados en algunos casos.
Para información detallada, consulte Spread VS. Object.assign y Asignación VS. definición de propiedades.
useBuiltIns
boolean, valor predeterminado: false.
Habilitar esta opción usará Object.assign directamente en lugar del helper extends de Babel.
Ejemplo
.babelrc
{
"assumptions": {
"setSpreadProperties": true
},
"plugins": [
["@babel/plugin-transform-object-rest-spread", { "useBuiltIns": true }]
]
}
Entrada
z = { x, ...y };
Salida
z = Object.assign({ x }, y);
Puedes leer más sobre cómo configurar opciones de plugins aquí