Перейти к содержанию
  • Лента
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
exlends
Категории
  1. Главная
  2. Категории
  3. Языки программирования
  4. JavaScript
  5. Temporal API достиг Stage 4: конец мучениям с Date

Temporal API достиг Stage 4: конец мучениям с Date

Запланировано Прикреплена Закрыта Перенесена JavaScript
temporaldate apijavascript
1 Сообщения 1 Постеры 1 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • hannadevH Не в сети
    hannadevH Не в сети
    hannadev
    написал отредактировано
    #1

    Обложка: Temporal API достиг Stage 4 в TC39: конец эпохе страданий разработчиков с объектом Date

    После девяти лет разработки Temporal API официально достиг Stage 4 в процессе TC39, что означает его включение в стандарт ECMAScript 2026. Это исторический момент для JavaScript - впервые у разработчиков появится современное и удобное решение для работы с датами и временем вместо криво работающего объекта Date, который мучил программистов с 1995 года.

    Теперь не нужно будет вытаскивать внешние библиотеки вроде Moment.js и других костылей, которые скачивали 84 миллиона раз в неделю только потому, что встроенный инструмент оказался совершенно непригодным. Temporal решает множество реальных проблем, с которыми сталкиваются разработчики при работе с временными данными в масштабных приложениях.

    Почему Date нужно было менять

    Объект Date в JavaScript никогда не был удобным инструментом для работы с датами и временем. Он не поддерживает работу с временными зонами по-человечески, не может хранить время с наносекундной точностью, и вообще построен так, словно его создавали люди, которые никогда не работали с финансовыми системами или глобальными приложениями.

    Блумберг столкнулся с этой проблемой лицом к лицу: их терминал работает на JavaScript и должен функционировать по всему миру во всех часовых поясах одновременно. Финансовые операции требуют наносекундной точности для временных меток сделок, а историческая информация о сдвигах часовых поясов должна работать корректно. Встроенный Date просто не мог это обеспечить, поэтому компания решила спонсировать разработку полноценной замены.

    Вот основные проблемы, которые Temporal решает:

    • Часовые пояса без головной боли - явная поддержка любых часовых поясов из базы IANA
    • Наносекундная точность - для финансовых и временных критичных операций
    • Неизменяемость - новые типы данных не могут быть случайно изменены
    • Множество календарных систем - не только григорианский календарь, но и еврейский, исламский и другие
    • Стандартизация - соответствие RFC 9557, RFC 3339 и ISO 8601

    Что конкретно получит разработчик

    Temporal добавляет в JavaScript целую экосистему новых типов для работы с временем, каждый из которых решает конкретную задачу. Вместо попыток «выжать» нужную функциональность из Date, теперь можно использовать правильный инструмент для каждого сценария.

    Новый API обеспечивает явную работу с часовыми поясами вместо скрытых преобразований, которые часто приводят к ошибкам. Разработчики могут легко манипулировать датами без странных побочных эффектов, которые были в Date. Временные метки округляются правильно, часовые пояса применяются корректно, и исторические данные обрабатываются без головной боли.

    Основные типы Temporal:

    • Temporal.PlainDate - просто дата без времени
    • Temporal.PlainTime - просто время без даты
    • Temporal.PlainDateTime - дата и время, но без часового пояса
    • Temporal.ZonedDateTime - дата, время и часовой пояс вместе
    • Temporal.YearMonth - месяц и год без дня (например, для счётов)
    • Temporal.MonthDay - день и месяц без года (для дней рождения)
    • Temporal.Duration - промежуток времени между событиями

    Каждый тип спроектирован с учётом реальных потребностей разработчиков, а не случайно сложенной логики, как в Date.

    Где уже работает и как скоро использовать

    Temporal уже поддерживается в основных браузерах и вполне готов к использованию в продакшене прямо сейчас, без ожидания полной стандартизации. Firefox версии 139 получил поддержку в май 2025 года, Chrome и Edge версии 144 - в январе 2026. Safari имеет частичную поддержку в Technology Preview с полной поддержкой, ожидаемой к концу 2026 года.

    Для разработчиков, которые хотят использовать Temporal уже сейчас, существует полифилл размером около 100 килобайт в сжатом виде. Когда Temporal станет частью стандарта и будет поддерживаться везде, от полифилла можно избавиться и сэкономить место в бандле. TypeScript 6.0 Beta уже включил типы для Temporal, что означает полную поддержку при разработке.

    Текущая поддержка браузерами выглядит так:

    Браузер Версия Когда
    Firefox 139+ Май 2025
    Chrome 144+ Январь 2026
    Edge 144+ Январь 2026
    Safari Tech Preview Конец 2026
    Node.js 26 Скоро
    TypeScript 6.0 Beta Февраль 2026

    Для legacy проектов есть полифилл, который обеспечивает полную функциональность, но весит прилично. Это стоит учитывать при выборе между нативной поддержкой и полифиллом.

    Сколько работы пришлось вложить

    Dev часто не понимают, сколько именно усилий требуется чтобы добавить что-то в JavaScript стандарт. Temporal стал, вероятно, самым крупным предложением в истории TC39, и это не преувеличение. Предложение увеличило размер спецификации JavaScript примерно на 40 процентов - это огромное количество текста, логики и деталей, которые пришлось проработать.

    Блумберг не просто пожаловался на проблему - компания вложила серьёзные ресурсы в её решение. Она спонсировала трёх полнотайм инженеров (Филиппа Дункеля, Филипа Чименто и Уджвала Шарму) и поддерживала их работу в течение девяти лет. Igalia также была ключевым партнёром в разработке, внося значительный вклад в стандартизацию.

    Процесс TC39 требует согласия всех сторон на каждом шаге, что означает бесчисленные обсуждения, переработку деталей и тестирование. Для браузеров реализация Temporal стала большой задачей - нужно было добавить поддержку огромного количества функциональности в движки JavaScript. Все эти детали приводили к сложностям, которые требовали постоянного обсуждения и согласования.

    Что ещё нужно знать перед внедрением

    Хотя Temporal уже готов к использованию, есть несколько практических соображений перед внедрением. Во-первых, это большой API с множеством методов и опций - придётся потратить время на обучение и адаптацию кода. Во-вторых, миграция существующего кода с Date на Temporal будет требовать систематического подхода, особенно в больших проектах.

    Тестирование для Temporal включает около 4500 тестов из набора test262 - это намного больше, чем 594 теста для Date. Такое внимание к качеству означает, что API хорошо протестирован, но также говорит о его сложности и обширности. Разработчикам стоит изучить документацию и примеры, прежде чем переводить всё на Temporal.

    Практические рекомендации при внедрении:

    • Начните с новых проектов - не торопитесь с переносом существующего кода
    • Изучите разные типы Temporal для своих сценариев - выбор правильного типа критичен
    • Используйте TypeScript для полной типизации - это сильно снижает ошибки
    • Тестируйте работу с часовыми поясами и граничными случаями
    • Сначала используйте нативную поддержку, а не полифилл, если это возможно
    • Документируйте, как в вашем коде работают даты и времена

    Конец эпохи костылей

    Теперь, когда Temporal официально стал частью стандарта, можно закрывать целую эпоху JavaScript разработки, когда работа с датами была источником бесконечной боли и багов. 84 миллиона еженедельных скачиваний библиотек вроде Moment.js были не просто цифрами - это был крик всех разработчиков в пустоту, требующий решения проблемы, которая была в стандарте с 1995 года.

    Включение Temporal в ECMAScript 2026 означает, что через год-два браузеры и платформы полностью поддержат современное решение для работы с временем. Это не революция в смысле новых возможностей - это эволюция, долгожданное исправление фундаментальной проблемы языка, которая мешала разработчикам делать свою работу правильно. Когда нативная поддержка будет везде, от полифиллов можно будет избавиться, и код станет легче, быстрее и надёжнее.

    1 ответ Последний ответ
    0

    Здравствуйте! Похоже, вас заинтересовала эта беседа, но у вас ещё нет аккаунта.

    Надоело каждый раз пролистывать одни и те же посты? Зарегистрировав аккаунт, вы всегда будете возвращаться на ту же страницу, где были раньше, и сможете выбирать, получать ли уведомления о новых ответах (по электронной почте или в виде push-уведомлений). Вы также сможете сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.

    С вашими комментариями этот пост мог бы стать ещё лучше 💗

    Зарегистрироваться Войти

    Категории

    • Главная
    • Новости
    • Фронтенд
    • Бекенд
    • Языки программирования

    Контакты

    • Сотрудничество
    • info@exlends.com
    • Наш чат
    • Наш ТГ канал

    © 2024 - 2026 ExLends, Inc. Все права защищены.

    Политика конфиденциальности
    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Войдите или зарегистрируйтесь для поиска.
    • Первое сообщение
      Последнее сообщение
    0
    • Лента
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы