Как получить тип rootReducer? - PullRequest
1 голос
/ 04 мая 2019

У меня настроен проект с React, Redux, Immutable.js + TypeScript. Во время реализации я пытался как можно больше объявлять типы и обнаружил интересную проблему. Смотрите пример кода ниже:

Короткая конфигурация магазина редуксов

import { createStore } from 'redux';
import { combineReducers } from 'redux-immutable';

const rootReducer = combineReducers({...});
const store = createStore(rootReducer);

Где-то внутри компонента

// ...
const mapStateToProps = (state: ReturnType<typeof rootReducer>) => {
  // state is plain object :(
};

При наведении на состояние в VS Code подсказка показывает, что состояние - это простой объект, но это не так. Это должна быть коллекция из Immutable.js

Как я могу получить правильный тип rootReducer? Или что я делаю не так?

Скриншоты:

Hovered mouse over state variable

Hovered mouse over emphasized get method

P.S. StateType и ReturnType делают то же самое

1 Ответ

0 голосов
/ 15 мая 2019

Я потратил много времени на поиск решения о том, как заставить TypeScript работать с Immutable.js в паре, и, к сожалению, нет явного / тривиального решения (или я его не нашел).

Если вы только начинаете свой проект и ищете какие-то альтернативы, я настоятельно рекомендую вам взглянуть на библиотеку Immer . Он обеспечивает в основном ту же функциональность и отлично поддерживает TypeScript набор текста.

...