Las mejoras incorporadas en ECMAScript 9 (junio de 2018) ampliaron capacidades que ya existían en versiones anteriores de JavaScript, llevando el operador de propagación al terreno de los objetos y perfeccionando la captura de grupos en expresiones regulares. Estas dos características permiten escribir código más limpio y expresivo al momento de manipular datos.
¿Cómo funciona la captura de grupos en expresiones regulares?
Una de las novedades de ES9 es la mejora en regex (regular expressions) para capturar grupos de valores dentro de un patrón [0:57]. La idea es definir una expresión regular que segmente un string en partes significativas.
En el ejemplo práctico se crea un regex diseñado para interpretar fechas con el formato YYYY-MM-DD:
- Cuatro caracteres para el año.
- Dos caracteres para el mes.
- Dos caracteres para el día.
Después se utiliza el método exec del regex sobre un string como "2022-01-01" para obtener cada segmento por separado [2:07]. Al ejecutar console.table() —en lugar del clásico console.log()— se muestra una tabla en la consola con los valores capturados: el string completo, el año, el mes y el día, cada uno accesible por su índice [2:30].
Esto resulta útil cuando necesitas extraer porciones específicas de un texto que sigue un patrón conocido y continuar con tu lógica de programación a partir de esos valores.
¿Qué cambia con el operador spread en objetos?
En versiones anteriores ya se había introducido el spread operator (operador de propagación, representado con ...) para arrays. Con ES9 este operador se extiende a los objetos, permitiendo copiar y redistribuir propiedades de forma sencilla [3:16].
¿Cómo extraer propiedades y agrupar el resto?
El patrón rest en objetos permite separar propiedades individuales y agrupar las restantes en una nueva variable. Veamos el ejemplo paso a paso [3:42]:
javascript
const user = {
username: 'gndx',
age: 34,
country: 'CO'
};
const { username, ...values } = user;
console.log(username); // 'gndx'
console.log(values); // { age: 34, country: 'CO' }
- Se define un objeto
user con tres propiedades: username, age y country.
- Mediante desestructuración, se extrae
username como variable independiente.
- Con
...values se recogen todas las propiedades restantes del objeto en un nuevo objeto llamado values [4:38].
Al imprimir username se obtiene 'gndx', y al imprimir values se obtiene { age: 34, country: 'CO' } sin incluir username, porque ya fue extraído [5:02].
¿En qué situaciones resulta práctico?
Este patrón es especialmente valioso cuando necesitas:
- Transformar objetos eliminando o separando propiedades específicas.
- Pasar propiedades restantes a otro componente o función sin listarlas una por una.
- Clonar parcialmente un objeto manteniendo solo lo que te interesa.
Toda la potencia del spread operator aplicado a objetos cobra sentido en escenarios donde manipulas datos provenientes de APIs, formularios o estados de aplicación, y necesitas flexibilidad para reorganizar la información sin mutar el objeto original.
El método console.table() mencionado durante la demostración [2:22] es otra herramienta que vale la pena incorporar: presenta datos estructurados en formato de tabla directamente en la terminal o el navegador, lo que facilita la lectura cuando trabajas con objetos o arrays con múltiples propiedades.
Si ya dominas la desestructuración básica que se cubrió en versiones anteriores de ECMAScript, estas adiciones te permitirán escribir código más conciso. ¿Ya estás usando rest y spread en tus proyectos con objetos? Comparte cómo los aplicas en los comentarios.