@babel/plugin-transform-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
Esempio
In
var a = ["a", "b", "c"];
var b = [...a, "foo"];
var c = foo(...a);
Out
var a = ["a", "b", "c"];
var b = a.concat(["foo"]);
var c = foo.apply(void 0, a);
Installazione
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev @babel/plugin-transform-spread
yarn add --dev @babel/plugin-transform-spread
pnpm add --save-dev @babel/plugin-transform-spread
bun add --dev @babel/plugin-transform-spread
Utilizzo
Con un file di configurazione (Consigliato)
Senza opzioni:
{
"plugins": ["@babel/plugin-transform-spread"]
}
Con opzioni:
{
"plugins": [
[
"@babel/plugin-transform-spread",
{
"loose": true
}
]
]
}
Tramite CLI
babel --plugins @babel/plugin-transform-spread script.js
Tramite Node API
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-spread"],
});
Opzioni
loose
boolean, predefinito false.
Nella modalità loose, tutti gli iterabili vengono considerati array.
Considera di migrare all'assunzione di livello superiore iterableIsArray.
{
"assumptions": {
"iterableIsArray": true
}
}
Sotto l'assunzione iterableIsArray, Babel preserva i "buchi" quando si espande un array (ad esempio, [ ...Array(2) ] produce [ (hole), (hole) ]). Imposta iterableIsArray su false per evitare questo comportamento.
Maggiori informazioni sulla configurazione delle opzioni del plugin sono disponibili qui
allowArrayLike
boolean, predefinito false
Aggiunto in: v7.10.0
Questa opzione consente di espandere oggetti array-like come se fossero array.
Considera di migrare all'assunzione di livello superiore arrayLikeIsIterable.
{
"assumptions": {
"arrayLikeIsIterable": true
}
}
Un oggetto array-like è un oggetto con una proprietà length: ad esempio { 0: "a", 1: "b", length: 2 }. Nota che, come gli array veri, gli oggetti array-like possono avere "buchi": { 1: "a", length: 3 } equivale a [ (hole), "a", (hole) ].
Sebbene non sia conforme alle specifiche espandere oggetti array-like come se fossero array, molti oggetti sarebbero iterabili nei browser moderni con supporto a Symbol.iterator. Alcuni esempi significativi sono le collezioni DOM, come document.querySelectorAll("img.big"), che rappresentano il principale caso d'uso per questa opzione.
Nota che Babel consente di espandere arguments nei vecchi motori anche con questa opzione disabilitata, poiché è definito come iterabile nella specifica ECMAScript.