Релиз TypeScript 4.0
Вчера вышла новая версия TypeScript. Дениэл Розенвассер рассказал про все новинки релиза — "Announcing TypeScript 4.0".
Были добавлены вариативные типы кортежей (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 при автодополнении кода. Сайт проекта был полностью переписан.
https://devblogs.microsoft.com/typescript/announcing-typescript-4-0