В TypeScript 5.3 добавили поддержку атрибутов импорта для модулей ECMAScript, оно перешло в стадию релиз-кандидата (RC). В RC добавили опцию, которая позволяет предпочесть автоимпорты только типов. Анонс вышел 3 ноября.
TS теперь включает одну опцию для определенного редактора, прежде он добавлял модификатор типа, полагаясь на настройки разработчика.
При получении автоимпорта для Person в следующем примере:exportlet p: Person
При редактировании TypeScript обычно добавляется импорт как Person
:
import { Person } from "./types"; exportlet p: Person
и при определенных настройках, например verbatimModuleSyntax
, TypeScript добавит модификатор типа:
import { type Person } from "./types"; exportlet p: Person
TypeScript 5.3 будет поддерживать обновления предложения по атрибутам импорта для модулей ECMAScript.
В стандарте ECMA присутствует встроенный синтаксис для операторов импорта модулей, который позволяет передавать информацию вместе со спецификатором модуля. Все типы модулей будут поддерживаться с помощью атрибутов, описанных в унифицированном формате для всех JavaScript-сред, работающих с модулями JSON.
Один из возможных сценариев использования заключается в предоставлении данных о предполагаемом формате модуля во время выполнения программы. При этом содержимое этих данных не проходит проверку в типизации TypeScript, так как они зависят от окружения и предназначены для обработки веб-браузерами и средами выполнения.
Среди главных изменений: замена assert на with. Среды выполнения теперь используются для разрешения и интерпретации путей импорта. Перед загрузкой модуля утверждения импорта могут принимать только некоторые характеристики. Однако старый синтаксис утверждений импорта постепенно уступает место новым подходам.
TypeScript 5.3 RC можно получить через NuGet или через NPM с помощью следующей команды:
npm install -D typescript@rc
Что еще появилось в TypeScript 5.3:
Для типа import добавили поддержку атрибута resolution-mode. Сужение осуществляется на основе условий в каждой клаузе case с помощью переключателя (true).
TypeScript 5.3 при проверке обращений к суперсвойствам и вызовам методов теперь уделяет особое внимание соответствию полей классов, что позволяет выявлять ошибки связанные с проверкой типов. Вставки подсказок в TypeScript теперь поддерживают переход к определению типов, что значительно облегчает навигацию по коду.
При использовании компилятора TypeScript через tsc теперь происходит пропуск разбора JSDoc, что приводит к сокращению времени разбора и объему памяти, занимаемому для хранения комментариев.
Провели консолидацию между tsserverlibrary.js и typescript.js.
Теперь у вас есть возможность автоматического определения того, когда объявление, использующее слово «super», считается полем класса и вызывает ошибку.
Более того, в JavaScript появилась новая возможность настроить оператор «instanceof» путем определения метода «Symbol.hasInstance» у объекта, который находится справа от оператора. Чтобы добиться точного воспроизведения данного поведения в TypeScript, мы теперь проверяем наличие метода «Symbol.hasInstance» и его объявление в качестве функции-предиката типа. Если это условие выполняется, то объект, проверяемый в левой части оператора «instanceof», будет соответственно сужен данным предикатом типа.