Vai al contenuto principale

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

Traduzione Beta Non Ufficiale

Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →

informazioni

Questo plugin è incluso in @babel/preset-env, nella specifica ES2022

Una classe con un blocco statico verrà trasformata in una proprietà privata statica, il cui inizializzatore contiene il blocco statico racchiuso in un IIAFE (espressione di funzione freccia invocata immediatamente).

Esempio

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

verrà trasformato in

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

Poiché il codice generato include proprietà private di classe, se stai già utilizzando altri plugin per funzionalità delle classi (ad esempio @babel/plugin-transform-class-properties), assicurati di posizionarlo prima degli altri.

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

Installazione

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

Utilizzo

Con un file di configurazione (Consigliato)

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

Tramite CLI

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

Tramite Node API

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

Riferimenti