TypeScript смягчает боль при сужении типов

TypeScript 5.4, запланированное обновление сильно типизированного варианта JavaScript от Microsoft, уже общедоступно. Новые возможности версии 5.4 включают в себя сохранение сужения в закрытиях функций, созданных после последнего присваивания, и тип NoInfer для блокировки выводов к допустимым, но нежелательным типам.

Общий релиз был опубликован 6 марта. Релиз-кандидат был опубликован 22 февраля, после бета-версии, выпущенной 29 января. TypeScript 5.4 можно получить через NuGet или NPM. В NPM используйте следующую команду: npm install -D typescript@

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

Рассказывая об улучшении сужения типов, Microsoft отметила, что распространенной больной точкой в TypeScript было то, что суженные типы не всегда сохранялись в закрытиях функций. В TypeScript 5.4 при использовании параметров и переменных let в функциях, не являющихся шлейфами, программа проверки типов будет искать последнюю точку присваивания. Если таковая найдена, TypeScript может сузить тип за пределами содержащей функции.

В TypeScript 5.4 также появился служебный тип NoInfer<T>. Окружение типа в NoInfer<...> дает сигнал TypeScript сопоставить внутренние типы, чтобы найти кандидатов для вывода типа. Этот полезный тип решает проблему, когда TypeScript может выводить тип аргументов из того, что передается. Но не всегда понятно, какой тип лучше всего использовать для вывода, что приводит к тому, что TypeScript отклоняет корректные вызовы и допускает другие ошибки.

Другие улучшения в TypeScript 5.4:

  • TypeScript более точно проверяет, можно ли назначать строки в слоты-заместители шаблонного типа string.
  • Для перечислений введены новые ограничения на присваиваемость. Ранее, когда два перечисления имели одинаковые имена и одинаковые имена членов перечисления, они считались совместимыми, но TypeScript молча позволял им иметь разные значения. TypeScript 5.4 требует, чтобы значения были идентичными (если они известны). Также появились новые ограничения для случаев, когда один из членов перечисления не имеет статически известного значения. Кроме того, TypeScript больше не позволяет использовать в перечислениях имена Infinity, -Infinity или NaN.
  • Добавлены декларации для новых статических методов JavaScript groupBy и Map.groupBy. Object.groupBy принимает итерируемое множество и функцию, определяющую, в какую группу должен быть помещен каждый элемент. Функция должна создать ключ для каждой отдельной группы, а Object.groupBy использует этот ключ для создания объекта, где каждый ключ сопоставляется с массивом, содержащим исходный элемент. Map.groupBy аналогична, но создает не обычный объект, а Map.
  • Добавлена поддержка вызовов require( ) в --moduleResolution bundler и --module preserve.
  • Атрибуты и утверждения импорта теперь проверяются на соответствие глобальному типу ImportAttributes. Это означает, что время выполнения теперь может более точно описывать атрибуты импорта.
  • Быстрое исправление позволяет добавить новый параметр в функции, вызываемые со слишком большим количеством аргументов.
  • TypeScript теперь более агрессивно сокращает пересечения с переменными типа и примитивами, в зависимости от того, как ограничения переменной типа пересекаются с этими примитивами.
  • Из TypeScript 5.0 были добавлены исключения, такие как target: ES3-код, NoImplcitUseStrict, charset и out. TypeScript 5.4, скорее всего, станет последней версией, в которой список устаревших примитивов продолжит функционировать в обычном режиме.

TypeScript 5.4 следует за предшественником TypeScript 5.3, выпущенным в ноябре 2023 года и содержащим атрибуты импорта для модулей ECMAScript.

TypeScript смягчает боль при сужении типов
Понравилась новость? Тогда не забудь оставить свой комментарий.
А так же, добавь наш сайт в закладки (нажми Ctrl+D), не теряй нас.
08 марта 2024 г.
70
Теги: Microsoft , TypeScript

Комментарии

Оставить комментарий:
* отправляя форму, я даю согласие на обработку персональных данных

Читайте еще

Продолжаем добавлять языки программирования для Вас.
Впереди много интересного!

Только свежие новости программирования и технологий каждый день.