Захватывающие новые возможности на горизонте

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

В этой статье мы рассмотрим некоторые из наиболее ожидаемых дополнений к TypeScript 5.3.

Импорт атрибутов: повышение безопасности 🛡️

import json from "./data.json" assert { type: "json" };

Атрибуты импорта, предложение TC39, достигшее этапа 3, позволяют указать тип импортируемого объекта.

Вы можете использовать его со стандартным импортом ESM, динамическим импортом, реэкспортировать модуль с проверенным типом или даже создать экземпляр работника с проверенным типом.

Основной целью здесь является безопасность – обеспечение доступа к удаленному ресурсу, соответствующему фактическому типу MIME. Благодаря этой функции TypeScript потенциальные риски безопасности, связанные с неожиданными типами MIME, снижаются.

Поддержка выражений Throw: лучшая обработка ошибок 🚀

const id = searchParams.has("id") ? 
  searchParams.get("id") : 
  throw new Error("ID is required");

Выражения Throw – это предложение второго этапа, цель которого – предоставить вам возможность использовать throw в выражении, что сделает обработку ошибок более лаконичной и естественной. TypeScript пока не реализует это предложение, но они поддерживают эту идею, и как только она выйдет за рамки, они смогут начать реализовывать ее на языке.

Изолированные объявления: более быстрые монорепозитории 🏎️

{
    "compilerOptions": {
        "isolatedDeclarations": true
    }
}

Значительное изменение в TypeScript, направленное на ускорение монорепозиториев с глубокими деревьями зависимостей.

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

Если поставляется в TypeScript 5.3, это будет флаг конфигурации согласия.

Улучшенное сужение универсальных функций: улучшенные дженерики 💪