JavaScript em 2025: novas possibilidades na prática

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

JavaScript em 2025: o que há de novo na prática



O mundo do JavaScript não para. Até 2025, a linguagem deu um salto significativo, oferecendo aos desenvolvedores ferramentas poderosas para criar aplicações mais performáticas, seguras e legíveis. Neste artigo, vamos analisar as principais novidades do ECMAScript 2025 com exemplos práticos para Node.js. Você aprenderá como a Temporal API resolve o problema de trabalhar com datas, como os decoradores simplificam a metaprogramação e quais padrões de assincronicidade se tornaram o padrão de facto.



1. Temporal API: Trabalhando com datas e horas sem dor de cabeça



A tão esperada substituição do obsoleto Date finalmente se estabilizou. A Temporal API oferece objetos imutáveis, suporte a fusos horários e calendários, além de métodos legíveis para humanos.



Em vez de escrever gambiarras para parsing e formatação, agora você pode usar funções nativas:



const { Temporal } = require('@js-temporal/polyfill'); // Para Node.js < 22

// Criando uma dataconst now = Temporal.Now.plainDateISO();console.log(now.toString()); // "2025-03-15"

// Trabalhando com horasconst meeting = Temporal.PlainTime.from('14:30');const updatedMeeting = meeting.add({ hours: 1, minutes: 15 });console.log(updatedMeeting.toString()); // "15:45"

// Fusos horáriosconst zoned = Temporal.ZonedDateTime.from({ timeZone: 'Europe/Moscow', year: 2025, month: 12, day: 25, hour: 10});console.log(zoned.toInstant().epochMilliseconds); // 1735544400000

// Comparando períodosconst duration1 = Temporal.Duration.from({ days: 5 });const duration2 = Temporal.Duration.from({ days: 10 });console.log(Temporal.Duration.compare(duration1, duration2)); // -1


Por que isso é importante? A Temporal resolve problemas de mutabilidade (cada método retorna um novo objeto) e confusão com fusos horários, algo crítico para aplicações server-side em Node.js.



2. Decoradores: Padronização da metaprogramação



Os decoradores, que por muito tempo foram um recurso experimental do TypeScript, finalmente entraram no padrão ECMAScript 2025. Eles permitem adicionar lógica a classes, métodos e propriedades de forma fácil.



Agora você pode criar decoradores limpos e reutilizáveis sem bibliotecas de terceiros:



// Decorador para registrar chamadas de métodosfunction log(target, context) {  const methodName = String(context.name);  const originalMethod = target;

return function (...args) { console.log(`[LOG] Chamada de ${methodName} com argumentos:`, args); const result = originalMethod.apply(this, args); console.log(`[LOG] Resultado de ${methodName}:`, result); return result; };}

class OrderService { @log createOrder(userId, items) { // lógica de negócio return { id: Date.now(), userId, items }; }}

const service = new OrderService();service.createOrder(123, ['item1', 'item2']);// [LOG] Chamada de createOrder com argumentos: [ 123, [ 'item1', 'item2' ] ]// [LOG] Resultado de createOrder: { id: 1742030400000, userId: 123, items: [ 'item1', 'item2' ] }


Os decoradores são ideais para caching, validação, autorização e monitoramento em arquiteturas de microsserviços.



3. Padrões aprimorados de assincronicidade e paralelismo



Em 2025, o JavaScript recebeu recursos nativos para trabalhar com tarefas paralelas, que antes exigiam gerenciamento manual de promessas ou bibliotecas de terceiros.



3.1. Promise.withResolvers()

Este método simplifica a criação de promessas que são resolvidas externamente. Anteriormente, era necessário criar variáveis em um closure:



// Método antigofunction createDeferred() {  let resolve, reject;  const promise = new Promise((res, rej) => {    resolve = res;    reject = rej;  });  return { promise, resolve, reject };}

// Método novo (ECMAScript 2025)const { promise, resolve, reject } = Pro

Blogs

Book Recommendations