В TypeScript 5.3 добавили ​​поддержку атрибутов импорта

TS теперь включает одну опцию для определенного редактора, прежде он добавлял модификатор типа, полагаясь на настройки разработчика

В 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», будет соответственно сужен данным предикатом типа.

Читайте также
Вышел Spin 2.0 — обновление фреймворка Fermyon для создания приложений на WebAssembly
Вышел Spin 2.0 — обновление фреймворка Fermyon для создания приложений на WebAssembly
Вышел Spin 2.0 — обновление фреймворка Fermyon для создания приложений на WebAssembly

Фреймворк предназначен для облачных вычислений, которые собирают приложения из Wasm-компонентов, написанных на разных языках программирования. Spin 2.0 формирует базу для смены режимов между выполнением и реализацией.

Что нового в Apple Safari 17
Что нового в Apple Safari 17
Что нового в Apple Safari 17

Коротко о Safari 17.

Dev новости: Google Blocks стал Open source, Релиз Slint 1.7
Dev новости: Google Blocks стал Open source, Релиз Slint 1.7
Dev новости: Google Blocks стал Open source, Релиз Slint 1.7

На этой неделе Dev News сообщает о значимых новостях: выпуск новой версии Astro с функцией Server Islands и сотрудничество с Netlify, а также открытие Google Blocks и релиз Slint 1.7.

В Django 5 появилось 5 новых функций
В Django 5 появилось 5 новых функций
В Django 5 появилось 5 новых функций

Django, веб-фреймворке Python, появились пять новых функций. Среди них: упрощенная визуализация полей и форм, поля модели для вычислений и генерируемые столбцы, больше декораторов асинхронного представления, обработка исключений для асинхронных отключений и другие.