Может ли Redux гипотетически вывести тип mapStateToProps, переданного ему? - PullRequest
0 голосов
/ 21 октября 2019

Если я подключу свой компонент следующим образом:

connect(({ users }) => ({ users }))(MyComponent)

Typescript выдаст мне ошибку, говорящую type {} does not contain a property users, но я предполагаю, что она может вывести тип mapStateToProps какReturnType<typeof reducer> где редуктор - это функция, которую я дал моему магазину.

Можно ли каким-либо образом изменить редукс, чтобы мой приведенный выше код не выдавал ошибку с машинописью? Или я что-то неправильно понимаю относительно Typescript или react-redux?

1 Ответ

1 голос
/ 21 октября 2019

Нет, TS не может это сделать магическим образом, потому что определение этой функции полностью отделено от вашего магазина. (Фактически, технически это определение может использоваться с любым хранилищем, которое имеет свойство state.users, независимо от того, как выглядит остальное содержимое состояния.)

Так что далучший способ - сделать type RootState = ReturnType<typeof rootReducer>, импортировать этот тип в подключенные компоненты и объявить аргумент state как RootState. Этот общий подход я продемонстрировал на странице «Расширенное руководство по Redux Starter Kit» . На этой странице показано использование типа RootState с нашим хуком useSelector, но тот же подход будет применяться для connect.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...