Aller au contenu principal

@babel/plugin-transform-class-static-block

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, dans ES2022

Une classe contenant un bloc statique sera transformée en une propriété privée statique, dont l'initialiseur est le bloc statique encapsulé dans une IIAFE (expression de fonction fléchée invoquée immédiatement).

Exemple

JavaScript
class C {
static #x = 42;
static y;
static {
try {
this.y = doSomethingWith(this.#x);
} catch {
this.y = "unknown";
}
}
}

sera transformé en

JavaScript
class C {
static #x = 42;
static y;
static #_ = (() => {
try {
this.y = doSomethingWith(this.#x);
} catch {
this.y = "unknown";
}
})();
}

Comme le code généré inclut des propriétés privées de classe, si vous utilisez déjà d'autres plugins de fonctionnalités de classes (par exemple @babel/plugin-transform-class-properties), veillez à placer ce plugin avant les autres.

babel.config.json
{
"plugins": [
"@babel/plugin-transform-class-static-block",
"@babel/plugin-transform-class-properties"
]
}

Installation

npm install --save-dev @babel/plugin-transform-class-static-block

Utilisation

Avec un fichier de configuration (Recommandé)

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

Via CLI

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

Via l'API Node

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

Références