В 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/