Практыкі TC39 у 2026 годзе: адказанне пра декаратары, тэмпаральныя элементы і сігналы
Практычны ўзгляд на тры прыявленні TC39 — натыўныя декоратары, Temporal API і Signals — і якія наследкі ўсе гэта мае для разработчыкаў JavaScript і TypeScript з падтрымкай фул-стака.
З сяродзіны 1990-х гадоў скептыкі прыблізна раз на год заявляюць, што JavaScript „заканчыўся“, але ў кожны раз яго мова дазволяе ім паспяць. Комітет TC39, які керуе развіццю ECMAScript, тыхо працуе над практактурамі, які зменяють спосаб напісання повсякдзеннага коду.
Якщо вы разрабатываете на JavaScript, React чы Next.js, калькі практактурам, які зараз знаходзяцца на стадыі розгляду, варта звернуць увагу. Жадны з іх не ўособліва прыглядныя функцыі — це тып змян, які проста тыхо усуваюць стандартны код, які вы пішлі працоўна гады без жадных запытанняў.
Ось тры практактуры, якія варта стежыць.
1. Натыўныя декораторы скора будуць
Разработчыкі TypeScript гадзіны працавалі, выкарыстоўваючы декоратары за дапамой флага кампайляра experimentalDecorators. Гэты альтернатыўны спосаб скора стане неактуальным. Стандартызаваная працэўка з декоратарамі досягла 3-й стадыі, што значыць, ўжо зараз браузеры та среды выконання JavaScript ствараюць рэальныя ўтылізацыі гэтай працэўкі.
// before: relying on experimentalDecorators + reflect-metadata
class UserService {
@logCall
fetchUser(id: string) {
return api.get(`/users/${id}`);
}
}
Апдэйтаваная спецыфікацыя абмовляецца ад старага дизайна, заснованага на reflect-metadata, і выбірае ўсё прыемлівейшы варыянт: функцыя декоратара тепер прымеўае значэнне, якое ёй неабходна декораваць, а таксама об’ект контэксту, який яго описвае, і можа вернуць замену для гэтага значэння. Якщо вы колі-небудзь сталкаваліся з несувярэннымі версіямі реалізацый декоратароў у Babel і самогу TypeScript, гэта збліжэння ўсё-такі є справжньяю хорашай новынкай.
Узагальненне: якщо ваш выбраны фреймворк — ін’єкцыя залежнасцей у стылі Angular, MobX чы рэштры падобныя NestJS — апоўнены декоратарамі, то ў будучых версіях можна спакою чакаць меншых проблем з флагамі кампайляра.
2. Temporal практычна гатова да выпуску
Вбудоўаны об’ект Date у JavaScript вельмі час яўляеся прычыной разчароўвання: ён не мае імутабельнасці, працуе з часовымі поясамі спосабом, які ўскладнюе роботу, і мае методы змены стану, якія створюют проблемы нават у досвідчаных інжынерах. Temporal — пропазыцыя, якая ўжо давно падтрымвалася учаснікамі Mozilla і іншыма зацікавленымі сторонамі, — тепер досягла завершання і, як спакою чакаюць, будзе уключана ў наступную версію ECMAScript.
const meeting = Temporal.ZonedDateTime.from(
"2026-09-14T10:00:00[America/New_York]"
);
const inTokyo = meeting.withTimeZone("Asia/Tokyo");
За дапамою Temporal можна атрыбутаваць часовыя зоны да дат і часу, не выкарыстоўваючы бібліятэкі на кшталт moment.js, а таксама прымусова перакладваць час зустрэчы ў іншую зону, што робіць це проста, а не вымагае ручных расчыткаў з скошэнням часу. Якщо вы ствараеце функцыі планавання ўяўленняў у працоўніку Next.js, гэта, паводле многіх, яўляецца найбольшым павышэнням якосці роботы з гэтым мовай.
3. Signals: Стандарт для рэакtyўных станоў
useState у React, ref у Vue і signals у Solid — гэта розныя способы рашэння адной і той жа основнай проблемы: стежэння за значэннямі, якія зменшаюцца з часам, і реакцыя на гэтыя змены. Праект Signals ад TC39 мае на мету створыць у JavaScript натыўнае рэакtyўнае прімітів, на яком моглі б будавацца фрэймворкі, замест таго каб кожны екосыстэм ствараў свой варіянт таго ж механізма.
Этыя прыдзекі ў процэсе стварэння яшчэ на ранній стадыі, але напрамак, які ўсунуць — жартама кажучы — чысты: менш павтарэння логікі реактыўнасці ў Redux, React і іншых бібліятах для керування станам, і больш спакульнаваных, можна перыяўтарваць элементаў пад іхнім кераваннем.
Што гэта значыць для вашага стаку
- Першыя выгоды з TypeScript будуць відчутныя. Чыстэйшыя, стандартызаваныя апісанні типаў для дэкоратараў і Temporal будуць перанесеныя ў інструменты, якія вы вжываеце.
- Ваш слой UI і настройкі стылю, уключаючы Tailwind CSS, не будуць безпасебна падвергнутыя вплыву, але шырэйшае і надзейнейшае керуванне датамі/часам значыць менш персональнага коду, які засмучвае вашы компоненты.
- Нават перш чым бібліяты на стороне кліента будуць цэлысна адмацаваць Temporal, серверныя компоненты Next.js ў большай меры стануць месца для яго вжывання, у першую чаргу для форматавання датаў на стороне сервера.
Саўкансэр TC39 Роб Палмер у апошніх апдэтах камітэту зазначыў, што зараз стала звычайнаю ситуацыя, калі калькі праектаў праходзяць на адной і той жа цыкле заседанняў. Такія тэндэнцыі свідчаюць пра тое, што тэмпы развіцця языка справжньа прышоў да прыгожэй скорасці за апошнія калькі гадоў.
Заключныя меркі
Усё гэта не перапішае JavaScript, які вы викорыстоўваете сёння. Але наступны раз, калі вы інстынктыўна будзеце вяртацца да moment.js або борацца з паліфіламі для декоратараў, памятайце, што адпаведныя натыўнія рашэнні вже праходзяць процес апрацоўкі. Тое, што досвідчаныя разработчыкі застаюцца на калькі праектаў адны-два пасулькі падалей, дапамагае ўтримацца ад неблагопрыятных наследків — і гэта таксама прычына, чаму багато з іх супрацоўваюць проты вжывання патэранаў, якія моглі б стварыць тэхнічны борг, яшчэ до таго, какія гэтыя праекты будуць завершаны.