Я пытаюсь использовать redux-thunk в проекте React Native на основе TypeScript.Мои Действия определены как
export type Action<T> = {
type: T,
payload?: any
}
Мой магазин определен как
import { applyMiddleware, createStore } from 'redux'
import { persistStore } from 'redux-persist'
import thunk from 'redux-thunk'
import logger from 'src/redux/middleware/logger'
import rootReducer from 'src/redux/reducers'
export const store = createStore(rootReducer, applyMiddleware(logger, thunk))
export const persistor = persistStore(store)
Мой конструктор действий определен как
export const setRepeat = (repeat: Repeating) => (
dispatch: Dispatch<Action>,
getState: () => AppState
) =>
dispatch<Action>({
payload: repeat,
type: actionTypes.SET_REPEAT,
})
Repeating
- это простое перечисление:
export enum Repeating {
All = 'all',
None = 'none',
Single = 'single',
}
И когда я пытаюсь отправить это действие с
store.dispatch(setRepeat('all' as Repeating))
, я получаю эту ошибку
TS2345: Property 'type' is missing in type '(dispatch: Dispatch<Action<string>>, getState: () => AppState) => Action<string>' but required in type 'Action<string>'.
Из того, что я могу сказать, это означает, чтоsetRepeat
возвращает функцию (что имеет смысл, это то, для чего она определена).Но store.dispatch
не ожидает, что такая функция, как позволяет redux-thunk, и все еще ожидает Action
.
Я не могу найти никакого объяснения, почему thunk не предоставляет правильные типы здесь, иличто мне нужно сделать, чтобы исправить эту проблему.
- реактивный: 0.57.7
- резерв: 4.0.1
- реакт-избыточ: 6.0.0
- избыточный гром: 2.3.0