Vai al contenuto principale

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

Traduzione Beta Non Ufficiale

Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →

informazioni

Questo plugin è incluso in @babel/preset-env, sotto ES2018

Esempio

Proprietà Rest

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 }

Proprietà Spread

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

Installazione

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

Utilizzo

Con un file di configurazione (Consigliato)

babel.config.json
{
"plugins": ["@babel/plugin-transform-object-rest-spread"]
}

Tramite CLI

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

Tramite Node API

JavaScript
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).

attenzione

Considera di migrare all'assunzione di primo livello setSpreadProperties.

babel.config.json
{
"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

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

In

JavaScript
z = { x, ...y };

Out

JavaScript
z = Object.assign({ x }, y);
consiglio

Maggiori informazioni sulla configurazione delle opzioni del plugin sono disponibili qui

Riferimenti