En este post, exploraremos las principales características introducidas en ES9. Estas características pueden ayudarte a escribir código más limpio y eficiente. ¡Vamos a ello!
Propiedades de propagación (Spread Properties)
Los operadores rest (...)
y spread (...)
se han extendido a las propiedades de objetos, lo que permite copiar y combinar objetos de manera más sencilla.
Ejemplo:
const objeto = {
nombre: "Ana",
edad: 28,
}
const usuario = {
...objeto,
ciudad: "Madrid"
}
console.log(usuario) // { nombre: "Ana", edad: 28, ciudad: "Madrid" }
La ventaja del spread operator es útil la creación de copias de objetos o la combinación de múltiples objetos.
En el post de spread operator y parámetro rest comparto más ejemplos de código y uso. Te invito a que le eches un ojo.
Promise.finally()
El método finally()
se ejecuta después de que una promesa se haya cumplido o haya sido rechazada. Esto permite ejecutar código de limpieza o finalización, sin importar el resultado de la promesa.
fetch('<https://api.ejemplo.com/datos>')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error))
.finally(() => console.log('La operación ha terminado'))
Mejoras en expresiones regulares
ES9 trae varias mejoras para las expresiones regulares. Una de ellas es el soporte para grupos de captura con nombre y el modificador s
(dotAll).
// Grupos de captura con nombre
const regexFecha = /(?<año>\\d{4})-(?<mes>\\d{2})-(?<dia>\\d{2})/
const match = regexFecha.exec('2023-08-18')
console.log(match.groups) // { año: '2023', mes: '08', dia: '18' }
// Flag 's' para modo dotall
const regex = /hola.mundo/s
console.log(regex.test('hola\\nmundo')) // true
Con esta mejora las expresiones regulares son más potentes y fáciles de usar.
Iteración asíncrona
Se introdujo la posibilidad de iterar sobre promesas de forma asíncrona utilizando for-await-of. Mira lo sencillo que es ahora el manejo de múltiples promesas de forma secuencial.
Un ejemplo con Promise:
async function ejemplo() {
const arrayDePromesas = [
Promise.resolve(1),
Promise.resolve(2),
Promise.resolve(3)
]
for await (let valor of arrayDePromesas) {
console.log(valor)
}
}
ejemplo() // Imprimirá 1, 2, 3
Un ejemplo con Async/await
async function* generarDatos() {
yield await new Promise(resolve => setTimeout(() => resolve('Dato 1'), 1000));
yield await new Promise(resolve => setTimeout(() => resolve('Dato 2'), 1000));
}
(async () => {
for await (const dato of generarDatos()) {
console.log(dato);
}
})();
JSON Superset
Esta novedad la aprendí al escribir el post. Ahora las cadenas JSON permiten que contengan los caracteres U+2028
(salto de linea) y U+2029
(salto de parrafo). Lo que mejora la compatibilidad con ciertos formatos de datos.
Ejemplo:
const jsonString = '{"lineSeparator":"\\u2028","paragraphSeparator":"\\u2029"}';
const jsonObject = JSON.parse(jsonString);
console.log(jsonObject); // { lineSeparator: '', paragraphSeparator: '' }</code>
Conclusión
ES9 trae consigo una serie de características que mejoran la eficiencia y la legibilidad del código JavaScript. Estas nuevas funcionalidades van desde la iteración asíncrona hasta las mejoras en las expresiones regulares. Permiten a los desarrolladores escribir código más limpio y manejable.
Recuerda que el mundo del desarrollo web está en constante evolución. Mantenerse actualizado con las últimas versiones de ECMAScript es clave para seguir siendo competitivo y eficiente. ¿Qué característica de ES9 te emociona más probar en tu próximo proyecto? Déjame tu comentario y comparte tus experiencia.
Sigueme en mis redes sociales para más contenido