Команда разработки TypeScript представила версию языка под номером 4.5. В ней улучшена производительность технологии, расширены возможности автодополнения и упрощено переподключение библиотек.
Без потерь зависимостей
Версия TypeScript 4.5 получила новый способ для переопределения встроенной библиотеки. Он представлен как альтернатива методу интеграции JavaScript и TypeScript при помощи изменения параметра lib в tsconfig.json. Такой подход приводил к необходимости после каждого обновления TypeScript вручную вносить соответствующие изменения в файлы объединений, при этом настройка самих файлов достаточно сложная под конкретные потребности проекта.
Новый способ работает подобно методу @types. Если необходимо принять решение о том, какие данные библиотеки нужно включить, TypeScript сперва будет искать пакеты @typescript/lib-* в области видимости node_modules. После этого можно обратиться к диспетчеру и провести установку файлов, которые заменят библиотеку. Последующие обновления TypeScript не приведут к потере существующих зависимостей.
Возможности дополнения
Еще одно важное дополнение в TypeScript 4.5 – появление двух новых видов автодополнения кода. Первый упрощает работу при завершении фрагментов методов и классов. Технология при реализации метода будет создавать подпись и фигурные скобки для тела, а не только имя.
Второй тип ускоряет использование фрагментов JSX-атрибутов. Если атрибут необходимо записать в JSX-тег, разработчику будет предложено несколько готовых вариантов, что сэкономит время при наборе кода.
Другие нововведения
В новой версии TypeScript добавлен служебный тип Awaited, предназначенный для моделирования операций await в асинхронных функциях. Также он может применяться для рекурсивного развертывания promise-объектов. Этот тип хорошо подходит для моделирования существующего API, в том числе и для встроенных модулей JavaScript Promise.all и Promise.race. Нововведение устраняет проблемы логического вывода Promise.all в старой версии языка.
TypeScript прекращает выполнение кода, если обнаруживает бесконечную рекурсию или расширение типов с множественной промежуточной генерацией результатов. Это иногда приводит к нежелательным результатам, поэтому в версии 4.5 добавлен инструмент для устранения хвостовой рекурсии при вызове условных типов.
Доработана проблема, из-за которой TypeScript не мог точно определить, применяется ли импорт в коде. Новый флаг –preserveValueImports запретит удалять любые значения, которые импортировал пользователь.
Для всех операционных систем в TypeScript 4.5 появилась поддержка функции realpathSync.native в Node.js, которую до этого могли использовать только владельцы устройств на Linux. Благодаря нововведению скорость загрузки проектов на Windows и macOS возрастет на 5-13%.