Новый стандарт 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.