Браузерная поддержка ECMAScript 2026: Temporal API и Map.getOrInsert в Chrome 145
-
Chrome 145 принес важные обновления для JavaScript-разработчиков. В этой версии браузера появились ключевые фичи из ECMAScript 2026 - Temporal API и метод Map.getOrInsert. Эти нововведения решают старые проблемы с датами и коллекциями, упрощая код и снижая ошибки.
Temporal API заменяет ненадежный Date, а Map.getOrInsert упрощает работу с картами. Поддержка в Chrome 145 означает, что можно использовать их в продакшене без полифиллов. Это ускорит разработку и повысит надежность приложений.
Temporal API: прощание с проблемами Date
Temporal API - это современная система для работы с датами и временем в JavaScript. Она достигла стадии 4 в TC39 и интегрирована в Chrome 145. В отличие от Date, Temporal разделяет понятия даты, времени, зоны и интервалов на отдельные типы, что исключает неоднозначности.
Представьте задачу: назначить встречу в Berlin 31 января 2026 в 14:00. С Date результат зависит от локальной зоны, что приводит к сдвигам. Temporal требует явного указания зоны, делая поведение предсказуемым. Реализация в V8 использует библиотеку temporal_rs версии 0.1, которая проходит все тесты.
Firefox уже поддерживает Temporal, Safari развивает полифилл, а Chrome 145 делает его стандартным. Это меняет подход к парсингу, форматированию и арифметике дат. Код становится чище, ошибки реже.
- ZonedDateTime: для моментов с зоной, пример:
new Temporal.ZonedDateTime(1738278000000n, 'Europe/Berlin'). - PlainDate: чистая дата без времени, идеальна для календарей.
- Duration: интервалы, с методами add/subtract, устойчивы к переполнению.
- Instant: глобальное время, не зависит от локали.
Свойство Date Temporal Зоны Неявные Явные, полная поддержка Изменяемость Мутабельный Неизменяемый Форматирование Локальное Настраиваемое, i18n Ошибки Тихие Явные исключения Важно: Temporal неизменяем, все операции возвращают новые объекты.
Map.getOrInsert: удобство для коллекций
Метод Map.getOrInsert - новинка ECMAScript 2026, доступна в Chrome 145. Он проверяет ключ в Map и возвращает значение, если оно есть, или вставляет значение по умолчанию и возвращает его. Это избавляет от шаблонного кода с has/get/set.
Раньше для кэша писали:
if (!map.has(key)) map.set(key, defaultValue); return map.get(key);. Теперь один вызов:map.getOrInsert(key, () => defaultValue). Функция создается лениво, только при отсутствии ключа. Поддержка в V8 оптимизирована для производительности.Это полезно в реактивных приложениях, где Map хранит состояния. Chrome 145 интегрирует это в стабильную ветку, без флагов. Другие движки следуют, но Chrome лидирует.
- Синтаксис:
map.getOrInsert(key, creatorFn)- creatorFn вызывается раз. - Производительность: быстрее if-has-set, меньше операций.
- Применение: кэши, счетчики, конфиги по умолчанию.
- Совместимость: полифилл не нужен в Chrome 145+.
Сценарий Старый код Новый код Кэш if/get/set getOrInsert Счетчик has ? ++ : set(0) getOrInsert(key, () => 0)++ Размер 3 строки 1 строка Нюанс: creatorFn должна быть чистой функцией, без сайд-эффектов.
Браузерная поддержка в Chrome 145
Chrome 145 вышла в феврале 2026, с фокусом на безопасность и JS-улучшения. Temporal и Map.getOrInsert - часть ECMAScript 2026, ожидаемого весной. Версия 145.0.7632.75+ для Windows/macOS и 144+ для Linux.
Другие фичи: улучшения WebRTC, CSS text-justify, JPEG-XL. Но Temporal и Map - ключевые для фронтенда. Тестируйте в devtools, обновляйтесь timely.
Проверка поддержки:
typeof Temporal !== 'undefined'иMap.prototype.getOrInsert. Стабильно в Chrome 145.- Стадии: Temporal - stage 4, Map.getOrInsert - в процессе.
- Полифиллы: @js-temporal/polyfill для старых браузеров.
- Тесты: используйте testharness.js из repo TC39.
Браузер Temporal Map.getOrInsert Chrome 145 Да Да Firefox Да Скоро Safari Полифилл В разработке Совет: комбинируйте с Promise.withResolvers для async.
Что дает ECMAScript 2026 фронтенду
Temporal и Map.getOrInsert поднимают JavaScript на новый уровень. Они закрывают пробелы в стандартной библиотеке, делая код короче и надежнее. Chrome 145 ускоряет adoption этих фич.
Остается ждать полной кросс-браузерности и интеграции с фреймворками. Подумайте, как переписать Date-код на Temporal в своих проектах - это сэкономит часы дебага.
- ZonedDateTime: для моментов с зоной, пример:
© 2024 - 2026 ExLends, Inc. Все права защищены.