Код
#новости

Microsoft выпустила TypeScript 4.5

Разработчики языка увеличили производительность, добавили новые способы автодополнения кода и упростили порядок переопределения библиотек.

17 ноября 2021 года старший менеджер Microsoft Даниэль Розенвассер объявил о выходе TypeScript 4.5. Посмотрим на несколько наиболее значимых изменений.

Модуль ECMAScript для Node.js 12 не получил постоянной поддержки, и его выпуск отложен до следующего релиза. В качестве временного решения разработчики могут подключить ночную сборку TypeScript. Даниэль Розенвассер объяснил, что большая часть экосистемы Node.js построена на модульной системе CommonJS (CJS) и для совместимости с ECMAScript (ESM) нужно больше обратной связи от пользователей.

У сниппетов появилось два дополнения для редактирования языковых конструкций. Первое дополнение помогает завершать новые фрагменты при переопределении или реализации методов в классах. TypeScript заполняет имя, полную подпись, выставляет фигурные скобки и автоматически перемещает курсор в тело метода.

Пример автозаполнения методов в подклассе. Изображение: Microsoft

Второе дополнение предназначено для атрибутов JSX. TypeScript добавляет инициализатор, заполняет фрагменты кода и переносит курсор в место для записи.

Пример автозаполнения JSX-тегов. Изображение: Microsoft

Для рекурсивного использования promise-объектов или операций в async-функциях можно обращаться к служебному типу Awaited. Новинка закрывает прошлые ошибки логического вывода Promise.all и помогает с моделированием действующих API.

// A = string
type A = Awaited<Promise<string>>;

// B = number
type B = Awaited<Promise<Promise<number>>>;

// C = boolean | number
type C = Awaited<boolean | Promise<number>>;

Для встроенных библиотек появился новый способ переопределения — похожий на тот, что реализован в методе @types. Теперь первоочередной поиск проводится по пакетам @typescript/lib-* и это поможет разработчикам быстрее решать, какие файлы включить или не трогать. Например, если в опции lib включить dom, то TypeScript будет использовать его с типом node_modules/@typescript/lib-dom.

После определения нужных файлов можно установить связь с диспетчером и добавить пакет на замену библиотеке. Если ориентироваться на пример с dom, то достаточно привязать проект к различным версиям API-интерфейсов DOM на @types/web. Для этого необходимо прописать в файле package.json несколько строк кода, которые позволят обновить TypeScript и не потерять настроенные зависимости.

{
 "dependencies": {
    "@typescript/lib-dom": "npm:@types/web"
  }
}

Помимо обновлений синтаксиса, TypeScript 4.5 поддерживает realpathSync.native в Node.js во всех операционных системах — раньше функция была доступна только пользователям ОС Linux. Это повысит скорость загрузки проектов где-то на 5–13%.

На Reddit большинство пользователей положительно отреагировали на обновления в TypeScript 4.5, но есть несколько замечаний. Так пользователю theQuandary не понравилось, что разработчики внедрили множество функций, но не позаботились об увеличении производительности компилятора. Даниэль Розенвассер ответил, что его команда уже работает над этим и добавит изменения в релизе TypeScript 4.6.

theQuandary:
Вместо множества функций я бы предпочёл, чтобы они работали над тем, чтобы сделать свой компилятор производительным. Это о-о-очень медленно на больших базах кода.

DanielRosenwasser:
Я полностью с вами согласен, но нужно расставлять приоритеты. Сообщения в блоге очень длинные (извините!), но в разделе «Что дальше?» основное внимание будет уделяться производительности и стабильности — план итераций представлю позже.

Скриншот: Reddit

isaagrimn:
Не буду обновляться, пока они не исправят автоимпорт на vscode. Нужно использовать '.' или '..', чего мы никогда не хотели делать, начиная с версии 4.4. Я очень взволнован, жду 4.6 и не могу терпеть проблемы с производительностью, которые возникают у меня при работе с большой кодовой базой.

Скриншот: Reddit



Учись бесплатно:
вебинары по программированию, маркетингу и дизайну.

Участвовать
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована