@babel/plugin-transform-object-rest-spread
Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →
Questo plugin è incluso in @babel/preset-env, sotto ES2018
Esempio
Proprietà 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 }
Proprietà Spread
let n = { x, y, ...z };
console.log(n); // { x: 1, y: 2, a: 3, b: 4 }
Installazione
- 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
Utilizzo
Con un file di configurazione (Consigliato)
{
"plugins": ["@babel/plugin-transform-object-rest-spread"]
}
Tramite CLI
babel --plugins @babel/plugin-transform-object-rest-spread script.js
Tramite Node API
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-object-rest-spread"],
});
Opzioni
Per impostazione predefinita, questo plugin produce codice conforme alle specifiche utilizzando l'helper objectSpread di Babel.
loose
boolean, predefinito false.
Abilitando questa opzione verrà utilizzato l'helper extends di Babel, che è sostanzialmente equivalente a Object.assign (vedi useBuiltIns più sotto per usarlo direttamente).
Considera di migrare all'assunzione di primo livello setSpreadProperties.
{
"assumptions": {
"setSpreadProperties": true
}
}
Tieni presente che, sebbene siano quasi equivalenti, esiste un'importante differenza tra lo spread e Object.assign: lo spread definisce nuove proprietà, mentre Object.assign() le _imposta_, quindi l'utilizzo di questa modalità potrebbe produrre risultati inattesi in alcuni casi.
Per informazioni dettagliate, consulta Spread VS. Object.assign e Assegnazione VS. definizione delle proprietà.
useBuiltIns
boolean, predefinito false.
Abilitando questa opzione verrà utilizzato Object.assign direttamente invece dell'helper extends di Babel.
Esempio
.babelrc
{
"assumptions": {
"setSpreadProperties": true
},
"plugins": [
["@babel/plugin-transform-object-rest-spread", { "useBuiltIns": true }]
]
}
In
z = { x, ...y };
Out
z = Object.assign({ x }, y);
Maggiori informazioni sulla configurazione delle opzioni del plugin sono disponibili qui