Aller au contenu principal

@babel/plugin-transform-block-scoping

Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

info

Ce plugin est inclus dans @babel/preset-env

Exemples

Entrée

JavaScript
{
let a = 3;
}

let a = 3;

Sortie

JavaScript
{
var _a = 3;
}

var a = 3;

Vérification des constantes

Ce plugin valide également toutes les variables const. La réaffectation de constantes constitue une erreur d'exécution et le plugin insérera le code d'erreur nécessaire pour ces cas.

Installation

npm install --save-dev @babel/plugin-transform-block-scoping

Utilisation

Avec un fichier de configuration (Recommandé)

Sans options :

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

Avec options :

babel.config.json
{
"plugins": [
[
"@babel/plugin-transform-block-scoping",
{
"throwIfClosureRequired": true
}
]
]
}

Via CLI

Shell
babel --plugins @babel/plugin-transform-block-scoping script.js

Via l'API Node

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

Options

throwIfClosureRequired

boolean, valeur par défaut : false.

Dans des cas comme le suivant, il est impossible de réécrire let/const sans ajouter une fonction et une fermeture supplémentaires lors de la transformation :

JavaScript
for (let i = 0; i < 5; i++) {
setTimeout(() => console.log(i), 1);
}

Dans du code extrêmement sensible aux performances, cela peut être indésirable. Si "throwIfClosureRequired": true est défini, Babel générera une erreur lors de la transformation de ces motifs plutôt que d'ajouter automatiquement une fonction supplémentaire.

tdz

boolean, valeur par défaut : false.

Par défaut, ce plugin ignore la zone morte temporelle (TDZ) pour les variables à portée de bloc. Le code suivant ne générera pas d'erreur lorsqu'il est transpilé avec Babel, ce qui n'est pas conforme aux spécifications :

JavaScript
i;
let i;

Si vous avez besoin de ces erreurs, vous pouvez demander à Babel de tenter de les détecter en définissant "tdz": true pour ce plugin. Cependant, l'implémentation actuelle pourrait ne pas couvrir tous les cas limites et il est préférable d'éviter simplement ce genre de code.

astuce

Vous pouvez en savoir plus sur la configuration des options de plugin ici