Melhores Features do ES9 JavaScript

O ECMAScript 2018, também conhecido como ES9, introduziu algumas funcionalidades importantes e úteis que podem facilitar o desenvolvimento em JavaScript. Neste post, vamos explorar as principais features do ES9 e como elas podem ser aplicadas.
Rest/Spread Properties
As propriedades rest e spread permitem que você manipule objetos de maneira mais fácil e intuitiva.
Rest Properties
As propriedades rest permitem que você colete o restante das propriedades de um objeto em uma nova variável.
const { a, b, ...rest } = { a: 1, b: 2, c: 3, d: 4 };
console.log(a); // 1
console.log(b); // 2
console.log(rest); // { c: 3, d: 4 }
Spread Properties
As propriedades spread permitem que você expanda as propriedades de um objeto em outro objeto.
const obj1 = { a: 1, b: 2 };
const obj2 = { ...obj1, c: 3 };
console.log(obj2); // { a: 1, b: 2, c: 3 }
Asynchronous Iteration
O ES9 introduziu a capacidade de iterar sobre objetos assíncronos usando o novo loop for-await-of
. Essa funcionalidade é especialmente útil ao trabalhar com operações assíncronas, como chamadas de API.
async function processArray(array) {
for await (const item of array) {
console.log(item);
}
}
const promises = [Promise.resolve(1), Promise.resolve(2), Promise.resolve(3)];
processArray(promises); // 1, 2, 3
Promise.finally()
O método .finally()
se junta às promessas, permitindo que você execute um bloco de código uma vez que a promessa foi resolvida ou rejeitada.
fetch('https://api.example.com/data')
.then(response => response.json())
.catch(error => console.error('Error:', error))
.finally(() => console.log('Done'));
Regular Expression Improvements
ES9 trouxe várias melhorias para expressões regulares, tornando-as mais potentes e fáceis de usar.
s (dotAll) Flag
Com a nova flag s
, o ponto (.
) nas regexes corresponde a qualquer caractere, incluindo novas linhas.
const regex = /foo.bar/s;
const str = 'foo\nbar';
console.log(regex.test(str)); // true
Named Capture Groups
Os named capture groups permitem que você nomeie grupos de captura nas regexes, facilitando a extração e leitura dos dados.
const regex = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
const str = '2023-10-05';
const groups = str.match(regex).groups;
console.log(groups.year); // 2023
console.log(groups.month); // 10
console.log(groups.day); // 05
Lookbehind Assertions
Com as lookbehind assertions, agora é possível fazer verificações atrás de uma determinada posição na string.
const regex = /(?<=\$)\d+/;
const str = 'Price: $42';
const match = str.match(regex);
console.log(match[0]); // 42
Conclusion
As features do ES9 trouxeram melhorias significativas para a linguagem JavaScript, tornando-a mais eficiente e poderosa. Elas facilitam a manipulação de objetos, melhorias em promessas, iteração assíncrona e trabalham de maneira mais robusta com expressões regulares. Certamente, esses novos recursos ajudam a escrever código mais limpo, expressivo e melhor estruturado.
Autor
flpchapola@hotmail.com
Posts relacionados

Substituindo ESLint e Prettier: Biome simplifica linting e formatação em um só lugar!
Nos meus novos projetos, tenho substituído o ESLint e Prettier pelo Biome. Um dos grandes destaques do Biome é que ele já...
Leia tudo
10 Dicas de CSS para Melhorar Seus Layouts e se Tornar um Desenvolvedor Melhor
10 Ferramentas para Melhorar suas Habilidades como Desenvolvedor Se você está buscando formas de se tornar um desenvolvedor mais eficiente e habilidoso,...
Leia tudo
Substituindo ESLint e Prettier pelo Biome: Uma Solução Completa para Linting e Formatação de Código
Nos meus novos projetos, tenho substituído o ESLint e Prettier pelo Biome. Um dos grandes destaques do Biome é que ele já...
Leia tudo
“10 Classes do Tailwind Que Você Gostaria de Ter Conhecido Antes”
O Tailwind CSS é uma estrutura de CSS poderosa e flexível, ideal para projetos de front-end que requerem desenvolvimento rápido e alta...
Leia tudo
Explorando a Arquitetura e Conceitos Fundamentais do React Fiber para Otimização de Performance
React Fiber é uma nova arquitetura introduzida pelo React para gerenciar o processo de renderização de forma mais eficiente. Ele visa melhorar...
Leia tudo