Operador de reposo

Este operador puede traer las propiedades de un objeto que aun no se ha construido.

const obj = {
    name: 'Pablo',
    age: 27,
    country: 'EC'
};

let { name, ...all} =  obj;
console.log(name, all);
//Salida> Pablo {age: 27, country: 'EC'}

Como se muestra en la salida primero vemos el nombre, y luego todo lo demás encapsulado en un objeto, de esta manera podemos establecer lo que necesitamos del objeto.

let { country, ...all} =  obj;
console.log(all);
//Salida> {name: 'Pablo', age: 27}

En el ejemplo estamos excluyendo a country y lo demas guardamos en un objeto.

Propagación para unir objetos

Nos permite usando el operador de propagación unir objetos.

const obj = {
    name: 'Pablo',
    age: 27
};

const obj1 = {
    ...obj,
    country: 'EC'
}

console.log(obj1)

// salida>
// {name: 'Pablo', age: 27, country: 'EC'}

promise.finally

Nos permite saber cuando una promesa ha finalizado para poder ejecutar una función o algoritmo, según sea el caso.

const helloWorld = () => {
    return new Promise((resolve, reject) => {
        (true)
            ? setTimeout(() => resolve('Hello World'), 3000)
            : reject(new Error('Test'))
    })
}

helloWorld()
    .then(response => console.log(response))
    .catch(error => console.log(error))
    .finally(() => console.log('Finalizo'))

// salida>
// Hello World
// Finalizo

Mejoras en el uso de regex

Una de las mejoras es el poder agrupar regex y poder acceder a estos de forma independiente.

const regexData = /([0-9]{4})-([0-9]{2})-([0-9]{2})/
const match = regexData.exec('2022-04-23');
const year = match[1];
const month = match[2];
const day = match[3];

console.log(year, month, day);
// salida>
// 2022 04 23