¡Lanzada versión 7.19.0: Decoradores en Stage 3 y más características para RegExp!
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
¡Acabamos de publicar Babel 7.19.0!
Esta actualización incluye mejoras en nuestra implementación de la propuesta de decoradores, que alcanzó la Etapa 3 en marzo. También añade soporte para la nueva propuesta de grupos de captura con nombres duplicados en expresiones regulares.
Puedes consultar el registro completo de cambios en GitHub.
Si tú o tu empresa quieren apoyar a Babel y la evolución de JavaScript, pero no están seguros de cómo, pueden donarnos en nuestro Open Collective y, aún mejor, trabajar directamente con nosotros en la implementación de nuevas propuestas de ECMAScript! Como proyecto impulsado por voluntarios, dependemos del apoyo de la comunidad para financiar nuestros esfuerzos en dar soporte a la amplia variedad de usuarios de JavaScript. ¡Contáctanos en team@babeljs.io si quieres conversar más!
Destacados
Nuevos valores por defecto
Debido a la estabilización de las propuestas de decoradores y Record y Tuple, hemos establecido nuevos valores predeterminados para sus opciones en los plugins del parser:
-
decorators/@babel/plugin-proposal-decorators:decoratorsBeforeExportahora tienefalsecomo valor predeterminado; -
recordAndTuple/@babel/plugin-proposal-record-and-tuple: la opciónsyntaxTypeahora tienehashcomo valor predeterminado.
Estas opciones se eliminarán en Babel 8.
Decoradores en Etapa 3 (#14836)
La propuesta de decoradores avanzó a la Etapa 3 con cambios menores pero observables. Puedes habilitar la nueva versión usando la opción "version": "2022-03" en @babel/plugin-proposal-decorators:
{
"plugins": [
["@babel/plugin-proposal-decorators", {
"version": "2022-03"
}]
]
}
Si estás migrando desde la versión 2021-12, estos cambios importantes podrían afectarte:
-
El método
initializedel objeto devuelto por los decoradores de acceso se ha renombrado ainit; -
Las propiedades
isPrivateeisStaticdel parámetrocontextrecibido por los decoradores (el segundo) se han renombrado aprivateystatic; -
El parámetro
contextahora siempre tiene una propiedadaccess, independientemente del tipo de elemento decorado; -
El soporte para metadatos (
getMetadata/setMetadata) se ha eliminado y se ha pospuesto para una futura propuesta; -
Los decoradores con sintaxis
@(expression)()ya no están permitidos, debes usar@(expression()); -
Los decoradores se aplican en este orden, en lugar de una sola pasada:
- Decoradores de métodos estáticos
- Decoradores de métodos de prototipo
- Decoradores de campos estáticos
- Decoradores de campos de instancia
- Decoradores de clase.
Si migras desde una versión anterior de la propuesta, te sugerimos leer el README completo. 😉
💡 TypeScript planea implementar esta versión de la propuesta. ¡Después de casi una década, será posible escribir decoradores sin preocuparse de si se compilarán con Babel o tsc!
Grupos de captura con nombre duplicados en RegExp (#14805)
Babel ahora soporta la propuesta de grupos de captura con nombre duplicados en RegExp, que permite reutilizar el mismo nombre de grupo en ramas alternativas de una expresión regular:
const dateRE = /(?<year>\d\d\d\d)-(?<month>\d\d)|(?<month>\d\d)-(?<year>\d\d)/;
console.log("2022-12".match(dateRE).groups); // { year: "2022", month: "12" }
console.log("12-2022".match(dateRE).groups); // { year: "2022", month: "12" }
Puedes habilitar esta propuesta usando el plugin @babel/plugin-proposal-duplicate-named-capturing-groups-regex:
{
"plugins": ["@babel/proposal-duplicate-named-capturing-groups-regex"]
}
Babel depende de diferentes paquetes de terceros para transformar expresiones regulares: esto es posible gracias a los mantenedores de regjsparser, regjsgen y regexpu-core que dedicaron tiempo a revisar nuestras pull requests!