Как использовать тип потока для создания хранилища Redux?

Я пытаюсь правильно ввести Redux с помощью потока. Я использую Store импорт из redux, чтобы ввести свой магазин таким образом, Flow использует flow-typed файл redux_v4.x.x.js и выдает мне ошибку:

/* @flow */
import rootReducer from '@reducers/index'
import type { Store } from 'redux'
import { applyMiddleware, createStore } from 'redux'
import { composeWithDevTools } from 'redux-devtools-extension'
import thunk from 'redux-thunk'

const configureStore = () => {
   const store: Store = createStore(
    rootReducer,
    composeWithDevTools(applyMiddleware(thunk))
  )
  return store
}

export { configureStore as default }

С этим кодом я получаю следующую ошибку: Cannot use Store [1] without 2-3 type arguments.

Я тоже пытался определить это так const store: Store<S, A>, но потом Flow жалуется, что не находит объявления для S и A, это нормально.

В файле redux_v4.x.x.js, используемом flow-typed, Store определяется следующим образом:

  declare export type Store<S, A, D = Dispatch<A>> = {
    // rewrite MiddlewareAPI members in order to get nicer error messages (intersections produce long messages)
    dispatch: D,
    getState(): S,
    subscribe(listener: () => void): () => void,
    replaceReducer(nextReducer: Reducer<S, A>): void,
  };

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

Спасибо за помощь!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
342
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно предоставить S и A типу Store. Например,

import { createStore } from 'redux';
import type { Store } from 'redux';

type State = Array<number>;
type Action = { type: 'A' };
type MyStore = Store<State, Action>;
const store: MyStore = createStore(...);

// or inline
const store: Store<Array<number>, { type: 'A' }> = createStore(...);

Ознакомьтесь с примером, представленным в test_createStore.js, или, чтобы получить более полный пример, ознакомьтесь с эта песочница.

Другие вопросы по теме