@babel/plugin-transform-block-scoping
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Este plugin está incluido en @babel/preset-env
Ejemplos
Entrada
{
let a = 3;
}
let a = 3;
Salida
{
var _a = 3;
}
var a = 3;
Comprobación de constantes
Este plugin también valida todas las variables const.
La reasignación de constantes es un error en tiempo de ejecución y se insertará el código de error necesario para estos casos.
Instalación
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev @babel/plugin-transform-block-scoping
yarn add --dev @babel/plugin-transform-block-scoping
pnpm add --save-dev @babel/plugin-transform-block-scoping
bun add --dev @babel/plugin-transform-block-scoping
Uso
Mediante un archivo de configuración (Recomendado)
Sin opciones:
{
"plugins": ["@babel/plugin-transform-block-scoping"]
}
Con opciones:
{
"plugins": [
[
"@babel/plugin-transform-block-scoping",
{
"throwIfClosureRequired": true
}
]
]
}
Mediante la CLI
babel --plugins @babel/plugin-transform-block-scoping script.js
Mediante la API de Node
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-block-scoping"],
});
Opciones
throwIfClosureRequired
boolean, valor predeterminado: false.
En casos como el siguiente, es imposible reescribir let/const sin añadir una función y un closure adicionales durante la transformación:
for (let i = 0; i < 5; i++) {
setTimeout(() => console.log(i), 1);
}
En código extremadamente sensible al rendimiento, esto puede ser indeseable. Si se establece "throwIfClosureRequired": true, Babel lanzará un error al transformar estos patrones en lugar de añadir automáticamente una función adicional.
tdz
boolean, valor predeterminado: false.
Por defecto, este plugin ignorará la zona muerta temporal (TDZ) para variables de ámbito de bloque. El siguiente código no lanzará un error cuando se transpile con Babel, lo cual no cumple con la especificación:
i;
let i;
Si necesitas estos errores, puedes indicarle a Babel que intente encontrarlos estableciendo "tdz": true para este plugin. Sin embargo, la implementación actual podría no cubrir todos los casos extremos y lo mejor es simplemente evitar este tipo de código desde un principio.
Puedes leer más sobre cómo configurar opciones de plugins aquí