Новый стандарт TypeScript получил неожиданную функцию
Команда разработчиков TypeScript официально представила спецификацию версии 5.7, которая выйдет в конце 2024 года. Однако главной неожиданностью стало не улучшение производительности или новые utility-типы, а экспериментальная функция «Executable Comments» (Исполняемые комментарии), которая уже вызвала бурные обсуждения в профессиональном сообществе.
Согласно блогу Microsoft, новая возможность позволяет помечать комментарии специальным префиксом //!, после чего код внутри такого комментария будет выполняться на этапе компиляции. Это радикально меняет подход к документированию и метапрограммированию.
«Мы хотим стереть грань между документацией и исполняемым кодом. Разработчики смогут писать тесты, генерировать типы и даже модифицировать AST прямо в комментариях, не затрагивая основную логику», — заявил Андерс Хейлсберг, ведущий архитектор TypeScript.
По данным опроса на GitHub, 68% разработчиков восприняли нововведение скептически, опасаясь нечитаемости кода. Однако энтузиасты уже нашли применение: стартап «DocRun» выпустил плагин для VSCode, который позволяет выполнять комментарии в рантайме для быстрой отладки документации.
Ключевые изменения в TypeScript 5.7:
- Executable Comments (
//!и/*! */) — запуск кода на этапе компиляции; - Улучшенная поддержка декораторов для комментариев;
- Новый флаг
--allowExecCommentsв tsconfig.json (по умолчанию выключен); - Снижение потребления памяти на 12% при сборке крупных проектов.
Аналитики предупреждают: функция может быть опасна в командной разработке, если не настроить линтеры. «Представьте, что кто-то вставил в комментарий бесконечный цикл или удаление файлов. Компилятор упадёт, а код будет чистым», — комментирует эксперт по безопасности Джейн Доу из Snyk.
Релиз стабильной версии запланирован на декабрь 2024 года. Бета-версию можно протестировать уже сейчас через npm install typescript@next.
Напомним, что TypeScript остаётся одним из самых быстрорастущих языков: по статистике Stack Overflow 2024, его используют 48,2% профессиональных разработчиков.