@babel/plugin-transform-block-scoping
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
Esempi
In
{
let a = 3;
}
let a = 3;
Out
{
var _a = 3;
}
var a = 3;
Verifica delle costanti
Questo plugin valida anche tutte le variabili const.
La riassegnazione di costanti è un errore a runtime e verrà inserito il codice di errore necessario.
Installazione
- 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
Utilizzo
Con un file di configurazione (Consigliato)
Senza opzioni:
{
"plugins": ["@babel/plugin-transform-block-scoping"]
}
Con opzioni:
{
"plugins": [
[
"@babel/plugin-transform-block-scoping",
{
"throwIfClosureRequired": true
}
]
]
}
Tramite CLI
babel --plugins @babel/plugin-transform-block-scoping script.js
Tramite Node API
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-block-scoping"],
});
Opzioni
throwIfClosureRequired
boolean, predefinito false.
In casi come il seguente è impossibile riscrivere let/const senza aggiungere una funzione e chiusura aggiuntiva durante la trasformazione:
for (let i = 0; i < 5; i++) {
setTimeout(() => console.log(i), 1);
}
In codice estremamente sensibile alle prestazioni, ciò può essere indesiderato. Se "throwIfClosureRequired": true è impostato, Babel genera un errore durante la trasformazione di questi pattern invece di aggiungere automaticamente una funzione aggiuntiva.
tdz
boolean, predefinito false.
Per impostazione predefinita, questo plugin ignora la temporal dead zone (TDZ) per le variabili a blocco. Il seguente codice non genererà un errore quando transpilato con Babel, il che non è conforme alle specifiche:
i;
let i;
Se necessiti di questi errori, puoi configurare Babel per rilevarli impostando "tdz": true per questo plugin. Tuttavia, l'implementazione corrente potrebbe non gestire correttamente tutti i casi limite ed è preferibile evitare completamente codice di questo tipo.
Maggiori informazioni sulla configurazione delle opzioni del plugin sono disponibili qui