Были добавлены вариативные типы кортежей (Variadic Tuple Types). Благодаря им возможно типизировать операции высокого порядка над кортежами и массивами, когда неизвестны типы значений.
Появилась поддержка меток для элементов кортежей (Labeled Tuple Elements):
type Range = [start: number, end: number];. Использование меток упрощает поддержку кода, так как они делают намерение разработчика более очевидным.В новой версии TypeScript появилась поддержка вывода типов для членов классов на основе анализа кода конструктора, когда включён
noImplicitAny.Добавлена поддержка составных операторов присваивания для логических операций:
a ||= b, a &&= b и a ??= b (Short-Circuiting Assignment Operators). Благодаря этим операторам можно компактно комбинировать присваивание с коротким циклом вычислений логических операций. В
try/catch блоке теперь можно указать тип unknown для catch. Это делает код безопаснее, потому что разработчик в таком случае должен явно сделать необходимые проверки перед использованием catch-значения.Теперь возможно указать свою JSX-фабрику для Fragment с помощью опции
jsxFragmentFactory. Также можно использовать прагму /** @jsxFrag */ для указания фабрики в пределах одного файла.Есть ломающие изменения. Операнды для
delete должны быть опциональными. Переопределние акцессоров свойствами и наоборот теперь будет приводить к ошибке. Был изменён lib.d.ts. Наиболее заметное изменение — удаление document.origin.Много изменений и улучшений в экосистеме TypeScript. Улучшена работа автоимпортов для только что установленных пакетов. Ускорена работа инкрементальной сборки. Редакторы могут использовать JSDoc
/** @deprecated */ для отметки устаревших API при автодополнении кода. Сайт проекта был полностью переписан.#typescript #release
https://devblogs.microsoft.com/typescript/announcing-typescript-4-0