Команда разработчиков Microsoft анонсировала выпуск новой версии языка программирования TypeScript 5.8. Это обновление приносит улучшения в проверке типов, а также оптимизирует работу компилятора и добавляет новые возможности для разработчиков. TypeScript, являясь надстройкой JavaScript, позволяет выявлять потенциальные ошибки на этапе компиляции, обеспечивая более надежный и предсказуемый код.
Улучшенная проверка ветвей в выражениях возврата
Одним из ключевых улучшений в TypeScript 5.8 стало введение более строгой проверки ветвей в выражениях возврата. Ранее в некоторых случаях TypeScript мог не замечать ошибки, возникающие из-за некорректного ветвления типов.
Пример кода:
declare const untypedCache: Map<any, any>;
function getUrlObject(urlString: string): URL {
return untypedCache.has(urlString) ?
untypedCache.get(urlString) :
urlString;
}
В этом случае, если untypedCache не содержит urlString, функция возвращает строку вместо объекта URL, что является ошибкой. В ранних версиях TypeScript такие ошибки могли оставаться незамеченными из-за особенностей обработки типа any. В новой версии механизм проверки стал более точным и теперь способен выявлять подобные несоответствия на этапе компиляции.
Оптимизация работы компилятора
Команда разработчиков также сосредоточилась на оптимизации производительности TypeScript. В версию 5.8 внесли улучшения в обработку больших проектов, благодаря чему компилятор теперь работает быстрее и эффективнее, особенно при многопоточном выполнении.
Кроме того, в новый релиз внесли исправления, снижающие потребление памяти, а это делает работу с крупными кодовыми базами более удобной.
Улучшенная поддержка условных типов
TypeScript 5.8 включает в себя улучшения для работы с условными типами. Теперь типы, основанные на условных выражениях, обрабатываются точнее, что позволяет избежать некоторых ранее возникавших ошибок в сложных системах типов.
Однако команда разработчиков решила отложить некоторые изменения, связанные с проверкой функций, использующих условные типы в качестве возвращаемых значений, до следующего релиза — TypeScript 5.9. Это связано с необходимостью дополнительного тестирования и проработки возможных сценариев использования.
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!