Вышел TypeScript 5.5.
вышла новая версия TypeScript. В ней куча небольших улучшений и даже сломана обратная совместимость. Я его уже попробовал, так что давай посмотрим что же там такое.
Предикаты типов теперь выводятся.
Предикаты типов — это когда мы пишем, что функция возвращает argument is Type
, а TypeScript использует это, чтобы уточнять типы в if
. Вот так:
Но убрать возвращаемый тип функции я не мог — вывод типов внутри if
просто не сработал бы. Потому что TypeScript до версии 5.5 выводил возвращаемый тип как boolean
.
А теперь могу:
Улучшение маленькое, но мне очень его хотелось. Потому что вот так я сделать не мог:
Пример надуманный, но я точно помню, что мне это нужно было на работе.
Код не работает потому что анонимные функции выводят свои типы так же, как и обычные. И в такой ситуации им тоже нужно было указывать возвращаемый тип явно. А писать возвращаемый тип для анонимной функции — некрасиво. Но теперь всё круто и filter
возвращает массив с правильными типами:
Но что-то может сломаться. Теперь типы выводятся точнее и старый код может не работать. Вот пример:
Если такое случилось, просто укажи явный тип и всё будет хорошо.
Уточнение типов теперь работает и с индексацией.
Так не работало:
А теперь компилятор понимает, что ни obj
, ни key
не меняются и правильно выводит тип выражения:
Регулярные выражения теперь проверяются на этапе компиляции.
Потрясающая фича. Я правда в восторге и даже понял зачем нужны литералы регулярок в языках программирования.
Теперь можно использовать методы множеств.
Теория множеств — это круто, а типизированные операции над множествами — ещё лучше.
И много чего ещё.
Про остальное скажу кратко потому что это в основном про конфигурации и декларации там всякие, а это скучно.
- Теперь можно писать
import
в JSDoc. Это чтобы импортировать типы в JavaScript, не импортируя модуль (import type
ведь только в TypeScript есть). - Добавили флаг
--isolatedDeclarations
чтобы быстрее генерировать файлы деклараций. - Добавили переменную
${configDir}
вtsconfig.json
иjsconfig.json
. - Больше нельзя создать переменную с именем
undefined
(да-да, а можно было).
А компилятор стал быстрее и сильно похудел (что для компиляторов хорошо). Если хочется больше подробностей о релизе — вот ссылка на release notes.