Saltar al contenido principal

@babel/plugin-transform-spread

Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

información

Este plugin está incluido en @babel/preset-env

Ejemplo

Entrada

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

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

var c = foo(...a);

Salida

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

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

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

Instalación

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

Uso

Mediante un archivo de configuración (Recomendado)

Sin opciones:

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

Con opciones:

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

Mediante la CLI

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

Mediante la API de Node

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

Opciones

loose

boolean, valor predeterminado: false.

En modo flexible, todos los iterables se asumen como arrays.

precaución

Considera migrar a la asunción de alto nivel iterableIsArray.

babel.config.json
{
"assumptions": {
"iterableIsArray": true
}
}

Bajo la asunción iterableIsArray, Babel preserva "huecos" al propagar un array (por ejemplo, [ ...Array(2) ] produce [ (hole), (hole) ]). Establece iterableIsArray a false para evitar este comportamiento.

consejo

Puedes leer más sobre cómo configurar opciones de plugins aquí

allowArrayLike

boolean, valor predeterminado: false

Añadido en: v7.10.0

Esta opción permite propagar objetos tipo array como si fueran arrays.

precaución

Considera migrar a la asunción de alto nivel arrayLikeIsIterable.

babel.config.json
{
"assumptions": {
"arrayLikeIsIterable": true
}
}

Un objeto tipo array es un objeto con propiedad length: por ejemplo, { 0: "a", 1: "b", length: 2 }. Nota que, como los arrays reales, estos objetos pueden tener "huecos": { 1: "a", length: 3 } equivale a [ (hole), "a", (hole) ].

Aunque no es conforme a la especificación propagar objetos tipo array como si fueran arrays, existen muchos objetos que serían iterables en navegadores modernos con soporte para Symbol.iterator. Algunos ejemplos destacados son las colecciones del DOM, como document.querySelectorAll("img.big"), que son el principal caso de uso de esta opción.

Ten en cuenta que Babel permite propagar arguments en motores antiguos incluso si esta opción está desactivada, porque está definido como iterable en la especificación de ECMAScript.

Referencias