Web/journal
TypeScript 5.5
TypeScript 5.5: фичи, которые реально пригодились в проде
← ЖурналWeb5 мин чтения

TypeScript 5.5: фичи, которые реально пригодились в проде

Команда nordiqdev
студия

Каждый минорный TypeScript обычно встречают двумя постами в твиттере и забывают. 5.5 - приятное исключение: пара фич, которые реально влияют на ежедневный код. Делимся, что включили у себя.

Inferred type predicates

Раньше после array.filter(x => x !== null) тип оставался (T | null)[]. Приходилось писать x is T руками или использовать обёртку. Теперь компилятор сам выводит type predicate из простых проверок.

На одном из наших проектов после обновления удалось удалить около 40 кастомных type guard-ов. Меньше boilerplate, меньше расхождений между фактической логикой и типами.

Regex syntax checking

Компилятор теперь подсвечивает синтаксические ошибки в литералах регэкспов: незакрытые группы, неэскейпленные символы, ссылки на несуществующие группы. Это не замена тестов, но один класс багов уезжает на этап компиляции.

isolatedDeclarations

Опция, обязывающая каждую экспортируемую сущность иметь явные типы. Звучит как боль, но окупается на больших монорепо: компилятор может строить .d.ts файлы параллельно, не глядя на тела функций. У нас на одной библиотеке это сократило время декларации типов с 18 до 4 секунд.

Минус - на существующих кодовых базах это требует прохода и расстановки явных типов. Не для всех проектов, но для библиотек и shared-пакетов - полезно.

Control flow narrowing для index access

После проверки if (obj[key] !== undefined) компилятор теперь правильно сужает тип в дальнейшем доступе через тот же ключ. Раньше требовалась временная переменная. Мелочь - но мелочь в каждой второй функции.

Что мы не включили

Новые JSDoc @import-аннотации полезны для JS-проектов. У нас таких нет, поэтому мимо. Performance-улучшения проекта самого компилятора заметны только на очень больших codebase - наш самый большой проект (~280k строк) сборки стал быстрее на 7%, на средних эффект в пределах шума.

Теги
#typescript#ts 5.5#frontend#typing
Студия nordiqdev

Делаем мобильные приложения, веб-сервисы и AI на заказ

Если задача из текста выглядит знакомой и нужна команда, которая соберёт продукт - расскажите подробнее. Вернёмся в течение 24 часов с разбором.