Языки программирования

TypeScript 5.7 улучшает отчет об ошибках

TypeScript 5.7 улучшает отчет об ошибках

TypeScript 5.7, последний запланированный выпуск Microsoft JavaScript с синтаксисом для типов, перешел на стадию релиз-кандидата. В версии 5.7 система типов языка теперь способна сообщать об ошибках, когда переменные никогда не были инициализированы.

Релиз-кандидат был представлен 8 ноября после бета-версии, выпущенной 9 октября. Получить доступ к нему можно через NPM с помощью команды: npm install -D typescript@rc.

С помощью проверки никогда не инициализированных переменных команда TypeScript решила проблему, когда проверка TypeScript на неинициализированные переменные не всегда срабатывала. Например, если доступ к еще не инициализированной переменной осуществлялся в отдельной функции, система типов не знала, когда будет вызвана функция; вместо этого она принимала оптимистичное мнение, что переменная будет инициализирована. Хотя TypeScript 5.7 по-прежнему снисходителен к переменным, которые могли быть инициализированы, система типов теперь может сообщать об ошибках, когда переменные вообще не были инициализированы.

Также в TypeScript 5.7 появилась новая опция компилятора --rewriteRelativeImportExtensions. Если путь импорта является относительным и заканчивается расширением TypeScript (.ts, .tsx, .mts, .cts), и это файл без декларации, компилятор перепишет путь в соответствующее расширение JavaScript (.js, .jsx, .mjs, .cjs). Это позволяет писать код TypeScript, который можно запускать на месте и компилировать в код JavaScript, когда он будет готов.

TypeScript 5.7 вышел вслед за сентябрьским релизом TypeScript 5.6, в котором появились такие возможности, как запрет проверок на нулевость и истинность синтаксиса, который никогда не изменяется по нулевости или истинности.

Другие возможности TypeScript 5.7 включают следующее:

  • TypeScript 5.7 поддерживает --target es2024, что позволяет разработчикам использовать ECMAScript 2024.
  • TypeScript 5.7 поддерживает кэширование компиляции V8 в Node.js.
  • TypeScript теперь имеет более последовательное поведение для методов в классах, когда они объявляются с нелитеральными вычисляемыми именами свойств.
  • Когда выражение функции контекстно типизировано сигнатурой, возвращающей общий тип, TypeScript теперь корректно предоставляет неявную ошибку any при noImplicitAny, но вне strictNullChecks.
  • Когда файл TypeScript загружается в редактор, использующий TSServer (например, Visual Studio или Visual Studio Code), редактор попытается найти соответствующий файл tsconfig.json, который «владеет» этим файлом.
  • При импорте из .json-файла по команде --module nodenext, TypeScript теперь будет применять определенные правила для предотвращения ошибок во время выполнения.

Читайте также