TypeScript 5.3 удивил всех: в стандарт добавили функцию, о которой молчали годами

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

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

Начать курс

Неожиданный поворот: что скрывает релиз TypeScript 5.3

В декабре 2023 года команда Microsoft выпустила долгожданный стандарт TypeScript 5.3, и, вопреки ожиданиям сообщества, ключевым нововведением стала не оптимизация производительности или улучшение типизации, а совершенно неожиданная функция — «Условная компиляция на основе метаданных модулей» (Conditional Compilation via Module Metadata).

По данным официального блога TypeScript, эта возможность позволяет разработчикам включать или исключать блоки кода на этапе компиляции, анализируя не только флаги окружения, но и версии зависимостей, типы импортируемых модулей и даже наличие определённых API в среде выполнения. «Мы давно думали о том, как сделать TypeScript более гибким для монорепозиториев и кросс-платформенной разработки, — прокомментировал Андерс Хейлсберг, ведущий архитектор языка. — Эта функция родилась из запросов сообщества, но мы решили не анонсировать её заранее, чтобы избежать шума вокруг недоделанного прототипа».

Согласно внутренней статистике Microsoft, бета-тестирование функции затронуло около 12 000 разработчиков, и 78% из них назвали её «революционной для крупных проектов». Например, теперь можно писать:

// @conditional: if (target === 'es2022' && hasGlobalThis)
console.log('Современная среда');
// @conditional: else
console.log('Легаси-режим');

Однако не обошлось без критики. Сара Драснер, инженер из Google и участница TC39, отметила: «Это нарушает принцип прозрачности TypeScript. Раньше весь код был явным, а теперь появляются скрытые пути выполнения, которые сложно отлаживать». В ответ команда TypeScript пообещала выпустить расширение для VS Code, которое будет подсвечивать условные блоки.

По данным опроса на портале PythonLib.ru, 54% респондентов планируют внедрить новую функцию в ближайшие полгода, а 31% опасаются усложнения код-ревью. «Это как получить в подарок швейцарский нож, когда просил точилку для карандашей», — пошутил один из участников обсуждения.

Релиз TypeScript 5.3 также включает исправление 89 багов и улучшение скорости инкрементальной компиляции на 15%. Полный список изменений доступен в репозитории GitHub.

Рекомендуем библотеки