🔟Обработка ошибок
⚡ 1) Intro
⚡ 2) RTK query обработка ошибок
⚡ 2.1) Теперь попробуем допустить ошибку
// let { packId } = useParams<{ packId: string }>();
let packId = "dasdsad";
⚡ 2.2) Поставим debugger и напишем возвращаемый тип ошибки

⚡ 2.3) Теперь попробуем вывести ошибку
Получим вот такой результат

⚡ 2.4) Обратимся к документации и попробуем понять что с этим делать
⚡ 3) The in operator narrowing
in operator narrowingОператор in в TypeScript используется для проверки наличия свойства в объекте или наличия элемента в массиве. Он выполняет проверку и возвращает логическое значение true или false.
Вот примеры использования оператора in:
1. Проверка наличия свойства в объекте:
В этом примере мы проверяем наличие свойств "name" и "address" в объекте person. Оператор in возвращает true, если свойство присутствует, и false, если свойство отсутствует.
2. Проверка наличия элемента в массиве:
Здесь мы проверяем наличие элемента с индексом 2 и 5 в массиве numbers. Оператор in возвращает true, если элемент с указанным индексом присутствует, и false, если элемент отсутствует.
3. Проверка наличия свойства в объекте с использованием условного оператора:
В этом примере мы проверяем наличие свойства "model" в объекте car. Если свойство присутствует, мы выводим его значение. В противном случае выводится сообщение о том, что модель автомобиля недоступна.
Таким образом, оператор in в TypeScript является полезным инструментом для проверки наличия свойства в объекте или элемента в массиве перед его использованием.
⚡ 4) Возвращаемся к документации
Пробуем применить пример к нашему коду. Разберем вот этот кусок кода
Проанализировав, можно придти вот к такому решению
Выглядит конечно так себе... Но такое решение нам диктует документация... Можно конечно сделать вот так
Но из плюсов 1 варианта мы все таки страхуемся от непредвиденных случаев, а во втором варианте просто полагаемся, что ошибка может быть именно такой...
⚡ 5) Глобальная обработка ошибок
Ну так может не будем обрабатывать ошибку из хука, а будем обрабатывать глобально в app.slice.ts
В общей обработке ошибок не получится сделать, т.к. мы там завязывались на санки, но никто нам запрещает сделать еще один addMatcher
Мы рассмотрели вариант типизации ошибки, которая приходит с хука, но если мы ошибку обрабатываем в catch, то становится еще хуже 😁
Тут нам понадобятся знания про предикатные типы
⚡ 7) Type predicates
В TypeScript "type predicates" — это специальные выражения, которые позволяют уточнить тип переменной во время выполнения кода. Они помогают более точно определить тип данных в условных выражениях, основываясь на свойствах или структуре объекта.
Основная идея состоит в том, что вы можете проверить, является ли переменная экземпляром определенного типа, и затем использовать эту информацию для более точного определения типа переменной в блоке кода.
Для создания типовых предикатов в TS используется специальный синтаксис с использованием оператора is. Вот пример:
В этом примере isNumber — это типовый предикат. Он принимает значение типа unknown и возвращает true, если значение является числом, или false в противном случае.
Далее, после определения типового предиката, вы можете использовать его в условных выражениях для уточнения типа переменной. Например:
В этом примере, если значение value является числом, то TypeScript позволяет умножить его на multiplier, так как тип переменной value уточнен внутри блока if с помощью типового предиката isNumber.
Типовые предикаты позволяют более точно работать с типами в TypeScript, делая код более безопасным и позволяя избегать ошибок типизации.
❗Рассмотрим пример из документации и сделаем выводы
Last updated