7.2.0 Publicado: Métodos privados de instancia
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
¡Acabamos de publicar una nueva versión menor de Babel!
Esta versión incluye soporte para métodos privados de instancia y múltiples correcciones de errores relacionados con tipos de Flow y TypeScript. Puedes leer el registro de cambios completo en GitHub.
Muchos colaboradores nuevos corrigieron errores o implementaron características en esta versión: ¡gracias a Gcaufy, Grigory Moroz, Paul Happ, Tim McClure y Veaceslav Cotruta!
¡Un enorme agradecimiento a Bloomberg por patrocinar la implementación de elementos privados en clases! Este soporte para métodos privados de instancia es continuación de los campos estáticos privados incluidos en Babel 7.1.0.
Si tú o tu empresa queréis apoyar a Babel y la evolución de JavaScript, pero no estáis seguros de cómo, podéis donarnos en OpenCollective y, mejor aún, ¡trabajar directamente con nosotros implementando nuevas propuestas de ECMAScript!
Métodos privados de instancia (#8654)
class Person {
#age = 19;
#increaseAge() {
this.#age++;
}
birthday() {
this.#increaseAge();
alert("Happy Birthday!");
}
}
¡Gracias a Tim por implementar esta propuesta, y a Nicolò y Justin por las revisiones!
Puedes probar los métodos privados añadiendo el plugin @babel/plugin-proposal-private-methods a tu configuración de Babel, o activando el preset stage-3 en el REPL.
Los accesores privados también están en camino, y hemos realizado una importante refactorización interna que nos permitirá añadir soporte para elementos privados en decoradores pronto 🎉.
Análisis del operador tubería "Smart" (#8289)
Gracias al trabajo de James DiGioia y J. S. Choi, @babel/parser ahora también puede analizar el Operador Tubería Smart, además de la versión mínima.
Actualmente solo admitimos el "núcleo" de la propuesta de tubería smart, sin características adicionales. También solo soportamos # como marcador de posición preliminar. El marcador definitivo aún no se ha decidido, y otras posibilidades como ?, @ y % podrían admitirse experimentalmente en @babel/parser en el futuro.
// "Smart"
const result = 2 |> double |> 3 + # |> toStringBase(2, #); // "111"
// "Simple"
const result = 2 |> double |> (x => 3 + x) |> (x => toStringBase(2, x));
Babel implementa múltiples variantes de esta propuesta para ayudar a TC39 a probar y recopilar feedback de la comunidad. Como con todas las propuestas, espera cambios futuros.
Si usas directamente @babel/parser y quieres probar esta propuesta, puedes pasar la opción proposal: "smart" al plugin de tubería:
const ast = babel.parse(code, {
plugins: [
["pipelineOperator", { proposal: "smart" }]
]
})
Aún no admitimos la transpilación de esta sintaxis, pero llegará pronto.
Nombres de plugins (#8769)
Cada plugin oficial ahora proporciona su nombre a Babel. Aunque esto no afecta el uso normal de Babel, ofrece un identificador consistente para cada plugin. Esto es especialmente útil para funciones como Time Travel, que permite ver exactamente qué transformaciones aplica cada plugin a tu código. Puedes verlo en acción en nuestro repl:
