Вышел TypeScript 4.2. Обзор релиза

10.03.2021      34104

Microsoft выпустила TypeScript 4.2. В ежеквартальном обновлении языка появилась возможность задать сигнатуре конструктора модификатор abstract и пометить при деструктуризации массива переменную как неиспользуемую. Типы кортежей теперь допускают rest-аргументы в любой позиции, а псевдонимы типов больше не раскрываются при отображении подсказки.

Поддержка rest-элементов в первом и промежуточных параметрах кортежей типов

Синтаксис кортежей в TypeScript поддерживает rest-элементы, которые обозначаются с префиксом [...] и могут содержать любое количество однотипных параметров. Раньше rest-параметры ставили на последней позиции, поэтому было невозможно выразить типы кортежей, которые заканчиваются фиксированным набором элементов. Такие типы кортежей полезны для строго типизированных функций со списками переменных параметров, которые заканчиваются фиксированным набором параметров. 

Теперь типы кортежей допускают rest-параметры в любой позиции, а не только в последней. Например:

type T1 = [...string[], number]; // Ноль или более строк за которым следует номер;
type T2 = [number, ...boolean[], string, string]; // Число, за которым следуют ноль или более логических значений, за которыми следуют две строки.

Теперь для rest-элементов остается только одно ограничение – они не могут идти после других rest-элементов и до опциональных элементов

Сохранение псевдонимов типов

Псевдонимы типов теперь сохраняются для более корректного отображения подсказки в IDE и вывода типа в файлах определения .d.ts. При этом также отслеживаются псевдонимы типов для экземпляров других псевдонимов. Это делает представление составных типов читаемым (в том числе в файле определения .d.ts).

 

Сравнение работы псевдонимов типов в предыдущей и текущей версии TypeScript

 

Модификатор abstract в сигнатурах конструкторов

TypeScript позволяет отмечать класс как абстрактный – в этом случае он используется только для расширения с помощью подкласса, а экземпляры объектов создаются только для конкретного класса-реализации. Но в TypeScript предыдущих версий возникали проблемы при создании миксинов, использующих абстрактные классы.

TypeScript 4.2 позволяет указывать абстрактный модификатор для сигнатур конструкторов. Добавление абстрактного модификатора в сигнатуру конструктора сигнализирует, что в нее можно передать абстрактный класс. Это не мешает передавать в нее другие классы и функции конструктора, которые являются «конкретными». 

Теперь фабрики миксинов будут поддерживать абстрактные классы

abstract class Shape {
  abstract getArea(): number;
} 
// Ошибка! Невозможно создать экземпляр абстрактного класса. 
new Shape();
interface HasArea { 
getArea(): number; 
} 
// Ошибка! Невозможно присвоить абстрактный тип конструктора неабстрактному типу конструктора. 
let Ctor: new () => HasArea = Shape;
// Работает!
let Ctor: abstract new () => HasArea = Shape; 

Строгие проверки для оператора in

В JavaScript использование не-объектного типа в правой части оператора in – ошибка времени выполнения. Синтаксическая проверка в TypeScript 4.2 гарантирует, что эту ошибку можно будет обнаружить во время разработки.

"foo" in 42
// ошибка! Правая часть выражения in не должна быть примитивом.

Неиспользуемые переменные при деструктуризации массива

Теперь при деструктуризации массива можно явно пометить переменные как неиспользуемые, добавив к ним знак подчеркивания.

let [_first, second] = getValues();

Ранее при включенной опции noUnusedLocals такой синтаксис выдавал ошибку: «Переменная объявлена, но не прочитана». Теперь для переменных массивов, имеющих префикс подчеркивания, ошибка выдаваться не будет.

Аргументы типа

Аргументы типа в JavaScript не разрешены, но в TypeScript 4.2 синтаксический анализатор будет анализировать их совместимым со спецификациями способом. При написании следующего кода в файле JavaScript:

f < T > ( 100 )

TypeScript проанализирует его как:

( f < T ) > ( 100 ) 

Это важно, если вы использовали API TypeScript для анализа конструкций типов в файлах JavaScript.

Планы на будущее

Следующая ежеквартальная версия TypeScript 4.3 запланирована на 25 мая. В плане итераций перечислены предстоящие языковые функции, улучшения производительности редактора, повышение производительности, улучшения инфраструктуры и многое другое.

Кроме того согласно дорожной карте TypeScript на 2021 год, Microsoft планирует:

  • разрешить любой тип ключа в качестве параметра подписи индекса;
  • добавить ключевые слова --noImplicitOverride и override; 
  • добавить подпись статического индекса;
  • использовать unknown как тип для catch переменных предложения;
  • разрешить больше кода перед super() вызовами в подклассах;
  • позволить typeof следовать выражению класса.

Напомним, что в прошлом году Microsoft раскрыла исходники библиотеки TypeScript для редактирования документов в облаке.

Официальная страница анонса релиза TypeScript 4.2


Автор:
Обозреватель


См. также

Новость ИТ-Новость

Российский Альянс по искусственному интеллекту обновил требования к специалистам по ИИ: вышла новая модель с основными профессиями и навыками. Теперь базовых профессий в сфере ИИ осталось только четыре.

01.11.2024    670    user1915669    0       

2

Новость ИТ-Новость

Система платежей «Волна» по планам сделает возможной бесконтактную оплату для владельцев IPhone в России, а BRICS Pay позволит совершать безналичные расчеты иностранцам по картам Visa и Mastercard.

23.10.2024    896    AnastasiaKl    0       

3

Новость ИТ-компания ИТ-Новость

Конструктор сайтов Wix уходит из России с 12 сентября 2024 года – перестанут работать все российский аккаунты. Сайты, привязанные к аккаунтам, также перестанут работать.

11.09.2024    945    user1915669    2       

2

Новость Искусственный интеллект ИТ-Новость

ИИ научат разработке цифровых интегральных микросхем – несколько российских научных институтов заявили об участии в проекте. Проект рассчитан на 3 года – с 2024 по 2026.

23.07.2024    600    user1915669    0       

2

Новость Дата-центры Искусственный интеллект ИТ-Новость

Развитие искусственного интеллекта и цифровых сервисов в России стало причиной роста потребности в мощных центрах обработки данных. Эксперты прогнозируют, что дефицит ЦОД, который уже наблюдается сегодня, в ближайшие годы будет только усиливаться.

18.07.2024    720    AnastasiaKl    0       

1

Новость ИТ-Новость

В сентябре 2024 года видеоигры в России начнут маркировать – пока на добровольной основе. Геймерам будут сообщать о семи видах чувствительного (неприятного) контента в игре.

17.07.2024    801    user1915669    0       

1

Новость Законодательство ИТ-Новость

Депутаты Госдумы работают над законопроектом по ужесточению контроля за электросамокатами. Среди мер: обязательная регистрация СИМ (средств индивидуальной мобильности) и разработка системы отслеживания их перемещений.

10.07.2024    769    AnastasiaKl    2       

1

Новость Искусственный интеллект ИТ-Новость

В 2024 году «Сколково» выделит пилотным проектам в сфере искусственного интеллекта гранты на общую сумму 554 млн рублей. В результате отбора финансирование получат проекты с применением ИИ в областях производства, операционной деятельности и в работе предоставляемых сервисов.

12.04.2024    1647    AnastasiaKl    3       

3
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение