TypeScript 4.9 - улучшения операторов satisfies, in и сравнения с NaN
Новая версия TypeScript 4.9 вносит некоторые довольно полезные улучшения в работу с типизацией и операторами. Давайте разберем их подробнее в данной статье и как все это поможет нам в наших проектах.
Гибкая типизация объектов с помощью satisfies
Оператор satisfies в TypeScript предоставляет возможности для гибкой типизации объектов. Он позволяет не ограничивать себя заранее заданными типами, когда мы сами формируем объект.
Рассмотрим на примере:
Здесь переменная code может быть числом или строкой, а extra - необязательным объектом.
Предположим, что мы взяли и опечатались в переменной extra:
Видим в консоли, что TypeScript выдаст нам ошибку, что нет такого свойства как ekstra.
Однако если захотим преобразовать и code , то тоже получим ошибку:
Вот именно тут к нам на помощь и приходит оператор satisfies:
Теперь объект может быть любым, главное чтобы он соответствовал ErrorInfo.
Таким образом, все это даёт нам большую гибкость в типизации. Теперь не нужно заранее ограничивать объект типом, а достаточно просто указать требования к структуре и затем TypeScript сам проверит соответствие интерфейсу.
Улучшение оператора in
Оператор in теперь позволяет лучше различать типы в условиях:
Раньше после проверки in тип все равно оставался A | B . Теперь же можно различить типы по наличию свойств.
Например это может быть особенно полезно при работе с unknown :
Сравнение со значением NaN
Теперь TypeScript будет предупреждать об ошибочном сравнении со значением NaN:
Раньше такое сравнение проходило без проблем, но теперь компилятор поможет нам избежать распространенной ошибки и предложит использовать Number.isNaN() .
Выводы
Таким образом, новая TypeScript 4.9 приносит нам ряд новых полезных улучшений как:
- Оператор satisfies, который позволяет гибко типизировать объекты
- Улучшение оператора in для определения типов
- Предупреждение о неправильном использовани и сравнении с NaN
Надеюсь, что вам понравилась данная статья и вы готовы использовать эти новые улучшения в своих проектах. Ставьте лайки и подписывайтесь. Не судите строго, не надо :(