Типизация данных хука useSelector, как проверить что приходит

Подскажите, если я использую хук useSelector то как мне быть уверенным, что пришло то, что мне нужно?

Если бы это были пропсы то есть PropTypes, может есть useSelectoTypes или ничего не нужно проверять?


Ответы (2 шт):

Автор решения: Vasily

Для типизации данных, получаемых из Redux Store есть два основных варианта, но оба требуют достаточно серьезной имплементации:

  1. Flow
  2. TypeScript

Flow можно условно назвать продвинутым вариантом PropTypes, но это очень мощная библиотека, единственным ограничением которой является то что она работает исключительно с React.

Имейте ввиду что на GitHub есть множество библиотек, который наверняка покрывают нужный Вам диапазон без необходимости типизации всего проекта, например посмотрите ответ @Август в котором он показывает как расширить применение библиотеки PropTypes на useSelector.

→ Ссылка
Автор решения: Август

ответ @Vasily очень полезен, но всё таки у Вас есть шанс использовать библиотеку PropTypes не только на props и даже не только внутри React.

У библиотеки есть метод checkPropTypes, которым Вы можете проверить любые типы. например:

import PropTypes, { checkPropTypes } from 'prop-types';
import { useSelector } from 'react-redux';

const mySelector = useSelector(MY_SELECTOR);   // создаете Ваш селектор
checkPropTypes(PropTypes.string, mySelector);  // выведет предупреждение в консоль, если селектор mySelector не будет равен string (как и в обычной типизации на пропсах

собственно, вот оф документация по этому методу (как использовать PropTypes в разных местах и даже вне React).

→ Ссылка