Сегодня вышла новая версия 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/