@babel/plugin-transform-block-scoping
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 →
Ce plugin est inclus dans @babel/preset-env
Exemples
Entrée
{
let a = 3;
}
let a = 3;
Sortie
{
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
- 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
Utilisation
Avec un fichier de configuration (Recommandé)
Sans options :
{
"plugins": ["@babel/plugin-transform-block-scoping"]
}
Avec options :
{
"plugins": [
[
"@babel/plugin-transform-block-scoping",
{
"throwIfClosureRequired": true
}
]
]
}
Via CLI
babel --plugins @babel/plugin-transform-block-scoping script.js
Via l'API Node
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 :
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 :
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.
Vous pouvez en savoir plus sur la configuration des options de plugin ici