ProIT: медіа для профі в IT
2 хв

Оновлення стандарту JavaScript: що нового в ECMAScript 2025

author avatar ProIT NEWS

Щорічне оновлення ECMAScript 2025 офіційно затверджене, і тепер відомо, які функції увійшли до специфікації мови JavaScript, а на які ще доведеться чекати. Цього року додали не всі очікувані можливості, але деякі нові пропозиції пройшли етапи затвердження дуже швидко. Про це повідомляє The New Stack.

До речі, назва стандарту ECMAScript використовується не лише тому, що комітет TC39, який працює над ним, входить до Ecma International. Oracle досі володіє торговою маркою JavaScript. Її юридична відповідь на вимогу Deno передати бренд спільноті як загальний термін (через відсутність у компанії відповідного продукту) очікується цього місяця.

Мова продовжує розвиватися з тією ж динамікою, що й упродовж останнього десятиліття — з часів масштабного оновлення ECMAScript 2015.

Цьогорічні зміни не є радикальними новими можливостями, а радше спрощенням роботи веброзробників.

Класифіковані колекції та ітератори

JavaScript давно підтримує ітератори, але до цього вони могли лише перебирати значення в колекції. Щоб трансформувати чи відфільтрувати дані, розробники користувалися сторонніми бібліотеками або перетворювали дані на масив, збільшуючи використання пам’яті. Тепер завдяки Iterator helpers це більше не потрібно.

Нові методи (map, filter, reduce, flatMap, some, find, every, а також drop і take) дають можливість відбирати й обробляти дані без проміжних структур. Наприклад, якщо потрібно взяти лише перші три значення, ітератор зупиниться відразу після їх отримання.

Поки що це стосується лише синхронних ітераторів. Асинхронні функції для роботи з ітераторами, які містять проміси, винесені в окрему пропозицію Sync iterators (Stage 2). Інша пропозиція — Iterator Chunking — дасть можливість отримувати відразу кілька значень для пакетної обробки.

Методи для множин (Set)

У мові з’явилися методи для роботи з множинами (set composition and comparison), які давно є у багатьох інших мовах. Раніше можна було лише додавати значення чи перевіряти їх наявність, а складніші операції доводилося реалізовувати самостійно.

Cкладність була у правильному визначенні порядку елементів, адже в JavaScript ітератори для множин дають спостережувану послідовність. Комітету довелося балансувати між інтуїтивністю та продуктивністю. Наприклад, при знаходженні перетину множин перевагу надали оптимізації для меншої множини, навіть якщо це змінює порядок елементів.

Методи працюють із будь-якими структурами, що відповідають трьом вимогам: властивість .size, метод has() і метод keys() для отримання ітератора. Тож вони доступні і для Map, але не для масивів чи рядків.

Модулі: атрибути імпорту й Import Bytes

Триває робота над розширенням можливостей модулів JavaScript. Частина фундаменту вже реалізована — зокрема, синтаксис Import attributes із головним словом with (не плутати зі старим оператором with), що дає можливість, наприклад, безпечно імпортувати JSON та уникати підміни коду.

Chrome раніше реалізував цю функцію з головним словом assert, але через зміну синтаксису інструментам довелося пройти етап міграції.

Також з’явилася пропозиція Import Bytes — імпорт байтових даних із будь-яких файлів (зображення, шрифти тощо). Вона вже підтримується у Deno, Bun, webpack, esbuild, Parcel і Moddable, але з різним синтаксисом. Стандартизація уніфікує його.

ECMAScript 2025 додає кілька покращень для RegExp:

Duplicate Names Capture Groups — можливість використовувати одне й те саме ім’я в різних частинах виразу, якщо збігтися може лише одна з них.

Regex Escaping — стандартний спосіб екранування символів зі спеціальним значенням (наприклад, $ або .).

Pattern Modifiers — зміна прапорів (чутливість до регістру, багаторядковість) усередині виразу, а не для нього цілком.

Інші нові функції

Promise.try — обгортка для функцій, щоб виконати їх у контексті промісу незалежно від того, синхронні вони чи асинхронні. Це спрощує код і полегшує роботу TypeScript із ним.

Float16 TypedArray — новий тип для зберігання 16-бітних чисел із плавучою комою, що зменшує використання пам’яті. Корисно для графіки (WebGPU, WebGL) і ML-моделей, де можна зберігати більше ваг із меншою точністю.

ECMAScript 2025 не пропонує радикально нових концепцій, але суттєво покращує зручність та ефективність роботи з JavaScript. Розширені можливості ітераторів, нові методи для множин, покращення модульності та регулярних виразів, а також оптимізації на рівні пам’яті роблять мову ще гнучкішою для веброзробників.

Читайте також на ProIT: 5 маловідомих JavaScript-бібліотек, які варто спробувати у 2025 році.

Підписуйтеся на ProIT у Telegram, щоб не пропустити жодної публікації!

Приєднатися до company logo
Продовжуючи, ти погоджуєшся з умовами Публічної оферти та Політикою конфіденційності.