Сегодня вышла новая версия TypeScript 3.9. Дениэл Розенвассер рассказал про новинки релиза в статье "Announcing TypeScript 3.9".
В TypeScript 3.9 были исправлены проблемы с медленной компиляцией, которые были обнаружены в
material-ui
,
styled-components
и других библиотеках. Было слито шесть пулл-реквестов каждый из которых ускоряет компиляцию на 5-10%. Один из внутренних проектов Microsoft после перехода на версию 3.9 сократил время компиляции с 29 секунд до 10 секунд.
Была исправлена ошибка выведения типов при использовании
Promise.all`и `Promise.race
. Эта проблема проявляла себя при оборачивании в промис значения, которое могло быть
null
или
undefined
.
Добавлена поддержка служебного комментария
// @ts-expect-error
, который можно использовать в юнит-тестах для тестирования кейсов корректной обработки ошибок в JavaScript-коде.
Расширена проверка функций в условных выражениях. Теперь компилятор будет сообщать об ошибке, если в тернарном операторе находится функция, которая не вызвыается.
Релиз нового оператора
awaited
для рекурсивного разворачивания промисоподных типов был отложен из-за обнаруженных проблем.
Была улучшена интеграция с редакторами. В JavaScript-файлах теперь работает автоимпорт модулей в CommonJS-стиле:
const fs = require("fs");
. Средства для рефакторинга сохраняют все переносы строк как в оригинальном коде. Был добавлен quick-fix для вставки забытого
return
. Была исправлена проблема с Language Server, который не подхватывал
tsconfig.json
, который полностью состоял из ссылок на другие конфиги (Solution-style).
Есть ломающие изменения. Optional Chaining с Non-Null Assertions теперь парсится немного по-другому. Символы "}" и ">" больше нельзя использовать в строках внутри JSX. Была улучшена проверка типов для пересечений объектов с опциональными свойствами и общими несовместимыми свойствами и т.п.
#typescript #release #announcement
https://devblogs.microsoft.com/typescript/announcing-typescript-3-9/