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.


Avatar de darkusphantom

Sigueme en mis redes sociales para más contenido


darkusphantom Desarrollo Web ,

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *