JavaScript в 2025 году: главные новинки и изменения

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

JavaScript в 2025 году: что нового?

Экосистема JavaScript продолжает стремительно развиваться. 2025 год принёс разработчикам долгожданные обновления и новые возможности, которые делают язык ещё более мощным и удобным. В этой статье мы разберём ключевые нововведения, которые уже доступны или появятся в ближайшее время, с акцентом на практическое применение в среде Node.js.

1. Temporal API: новая эра работы с датами

Одним из самых значимых нововведений 2025 года стал Temporal API — современная замена устаревшему объекту Date. Temporal решает давние проблемы с мутабельностью, часовыми поясами и парсингом дат.

Основные возможности Temporal:

  • Неизменяемость (immutability) — все операции возвращают новый объект.
  • Поддержка часовых поясов и календарей (включая не григорианские).
  • Точность до наносекунд.
  • Удобные методы для сравнения, форматирования и вычислений.

Пример использования в Node.js:

// Создание текущей даты и времени в UTC
const now = Temporal.Now.instant();
console.log(now.toString()); // "2025-06-10T12:30:00.123456789Z"

// Работа с датой без времени
const date = Temporal.PlainDate.from("2025-12-25");
console.log(date.dayOfWeek); // 4 (четверг)

// Сложение месяцев
const futureDate = date.add({ months: 3 });
console.log(futureDate.toString()); // "2026-03-25"

// Разница между датами
const start = Temporal.PlainDate.from("2025-01-01");
const end = Temporal.PlainDate.from("2025-12-31");
const duration = start.until(end);
console.log(duration.total("days")); // 364

2. Декораторы (Stage 3 → Stage 4)

После долгих лет обсуждений декораторы наконец-то достигли финальной стадии принятия в ECMAScript. В 2025 году они становятся полноценной частью языка, что особенно важно для фреймворков (NestJS, Angular) и библиотек.

Декораторы позволяют добавлять метаданные и изменять поведение классов, методов и свойств без изменения их кода.

Пример с Node.js и TypeScript-подобным синтаксисом (уже поддерживается в экспериментальном режиме):

// Декоратор для логирования вызова метода
function log(target, context) {
    const methodName = context.name;
    const originalMethod = target;

    return function (...args) {
        console.log(`[LOG] Вызов ${methodName} с аргументами:`, args);
        const result = originalMethod.apply(this, args);
        console.log(`[LOG] Результат ${methodName}:`, result);
        return result;
    };
}

class Calculator {
    @log
    add(a, b) {
        return a + b;
    }
}

const calc = new Calculator();
calc.add(5, 7);
// [LOG] Вызов add с аргументами: [5, 7]
// [LOG] Результат add: 12

3. Паттерн-матчинг (Pattern Matching) — экспериментальный этап

В 2025 году активно обсуждается и внедряется в экспериментальном режиме паттерн-матчинг — мощная конструкция, знакомая разработчикам на Rust, Haskell или Scala. Она позволяет элегантно обрабатывать сложные условия.

Синтаксис предложения (ещё может измениться):

// Пример паттерн-матчинга для обработки HTTP-статусов
function handleResponse(status) {
    match (status) {
        when (200) -> console.log("Успех");
        when (201) -> console.log("Создано");
        when (400, 401, 403) -> console.log("Ошибка клиента");
        when (500..599) -> console.log("Ошибка сервера");
        default -> console.log("Неизвестный статус");
    }
}

// Деструктуризация объектов
function processUser(user) {
    match (user) {
        when ({ role: "admin", permissions: { write: true } }) -> console.log("Админ с правами записи");
        when ({ role: "user", age: < 18 }) -> console.log("Несовершеннолетний пользователь");
        default -> console.log("Обычный пользователь");
    }
}

Пока эта фича доступна через Babel плагины или экспериментальные флаги Node.js, но ожидается, что к концу 2025 года она войдёт в черновик стандарта.

4. Улучшения в Node.js: производительность и инструменты

Node.js 22 и 23 (релизы 2024-2025 годов) принесли ряд важных улучшений, которые делают серверную разработку ещё эффективнее:

  • Встроенная поддержка WebSocket — теперь не нужны сторонние библиотеки вроде ws для базовых сценариев.
  • Улучшенный модуль node:test — стал полноценной заменой Mocha/Jest для простых проектов.
  • Оптимизация V8 — повышение производительности на 15-20% для типовых нагрузок.
  • Поддержка ESM (ECMAScript Modules) по умолчанию — окончательный переход от CommonJS.
  • Новый API для работы с файлами: fs/promises — полностью асинхронный и промис-ориентированный.

Пример использования нового node:test:

import { describe, it, mock } from 'node:test';
import assert from 'node:assert';

// Функция, которую будем тестировать
function fetchData(url) {
    return fetch(url).then(res => res.json());
}

describe('fetchData', () => {
    it('должна возвращать данные при успешном запросе', async () => {
        // Мокируем глобальный fetch
        const mockData = { id: 1, name: 'Test' };
        mock.method(global, 'fetch', () => 
            Promise.resolve({ json: () => Promise.resolve(mockData) })
        );

        const result = await fetchData('https://api.example.com/data');
        assert.deepStrictEqual(result, mockData);
    });
});

5. Прочие заметные нововведения

Помимо перечисленного, в 2025 году стоит обратить внимание на:

  • Pipeline operator (|>) — оператор для цепочек вызовов (всё ещё на стадии предложения, но активно тестируется

Блоги

Рекомендаций по книгам