Vai al contenuto principale

@babel/plugin-transform-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

Esempio

In

JavaScript
var a = ["a", "b", "c"];

var b = [...a, "foo"];

var c = foo(...a);

Out

JavaScript
var a = ["a", "b", "c"];

var b = a.concat(["foo"]);

var c = foo.apply(void 0, a);

Installazione

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

Utilizzo

Con un file di configurazione (Consigliato)

Senza opzioni:

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

Con opzioni:

babel.config.json
{
"plugins": [
[
"@babel/plugin-transform-spread",
{
"loose": true
}
]
]
}

Tramite CLI

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

Tramite Node API

JavaScript
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-spread"],
});

Opzioni

loose

boolean, predefinito false.

Nella modalità loose, tutti gli iterabili vengono considerati array.

attenzione

Considera di migrare all'assunzione di livello superiore iterableIsArray.

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

consiglio

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.

attenzione

Considera di migrare all'assunzione di livello superiore arrayLikeIsIterable.

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

Riferimenti