Saltar al contenido principal

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

Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

información

Este plugin está incluido en @babel/preset-env, como parte de ES2022

Una clase con un bloque estático se transformará en una propiedad privada estática, cuyo inicializador es el bloque estático envuelto en una IIAFE (expresión de función flecha invocada inmediatamente).

Ejemplo

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

se transformará en

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

Dado que el código generado incluye propiedades privadas de clase, si ya estás utilizando otros plugins para características de clases (por ejemplo, @babel/plugin-transform-class-properties), asegúrate de colocar este plugin antes que los demás.

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

Instalación

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

Uso

Mediante un archivo de configuración (Recomendado)

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

Mediante la CLI

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

Mediante la API de Node

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

Referencias