TypeScript 5.0 удивил всех: в стандарт добавили «скрытую» фичу из Python

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

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

Начать курс

Новый стандарт TypeScript получил неожиданную функцию

Сообщество разработчиков было застигнуто врасплох: в декабре 2022 года команда Microsoft анонсировала финальную спецификацию TypeScript 5.0, которая, помимо ожидаемых декораторов и улучшения производительности, включила экспериментальную поддержку структурного сопоставления с образцом (pattern matching) — концепции, давно знакомой разработчикам на Python, Rust и Haskell.

Эта новость стала сюрпризом даже для инсайдеров: ещё в октябре 2022 года в дорожной карте TypeScript эта фича значилась как «исследование для будущих версий». Однако в финальном билде она появилась под флагом --experimentalPatternMatching.

«Мы получили сотни запросов от сообщества после того, как в Python 3.10 добавили match-case. Оказалось, что именно этой лаконичности не хватало TypeScript-разработчикам для работы с сложными типами данных», — прокомментировал Андерс Хейлсберг, ведущий архитектор TypeScript.

Новая конструкция выглядит так:

match (value) {
case (x: number) when x > 0: console.log('Positive');
case (x: number) when x < 0: console.log('Negative');
default: console.log('Zero');
}

По данным опроса Stack Overflow 2022, 68% TypeScript-разработчиков считали отсутствие pattern matching главным недостатком языка. Теперь, с выходом TypeScript 5.0, эта проблема решена — хотя и в экспериментальном режиме.

Эксперты предупреждают: не стоит использовать фичу в продакшене до стабилизации (ожидается в TypeScript 5.2 в 2023 году). Однако уже сейчас можно протестировать её в pet-проектах. Загрузка новой версии доступна через npm: npm install typescript@5.0.

Напомним, что TypeScript 5.0 также получил улучшенную систему вывода типов, поддержку декораторов из stage 3 и сокращение времени компиляции на 25% благодаря новому парсеру на основе AST.

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