From ddd2aac69c490f4db116a2b161406ae1b8d96a9c Mon Sep 17 00:00:00 2001 From: Nathan Bierema Date: Mon, 5 Aug 2024 22:13:52 -0400 Subject: [PATCH] counter-example --- .../examples/counter/src/reducers/index.ts | 11 +++++++--- .../counter/src/store/configureStore.dev.ts | 20 ++++++++++++------- .../counter/src/store/configureStore.prod.ts | 8 +++----- .../counter/src/store/configureStore.ts | 4 ++-- 4 files changed, 26 insertions(+), 17 deletions(-) diff --git a/packages/redux-devtools/examples/counter/src/reducers/index.ts b/packages/redux-devtools/examples/counter/src/reducers/index.ts index 0540e0f3..9a6fc097 100644 --- a/packages/redux-devtools/examples/counter/src/reducers/index.ts +++ b/packages/redux-devtools/examples/counter/src/reducers/index.ts @@ -1,9 +1,14 @@ -import { combineReducers } from 'redux'; +import { combineReducers, Reducer } from 'redux'; import counter from './counter'; +import { CounterAction } from '../actions/CounterActions'; -const rootReducer = combineReducers({ +const rootReducer: Reducer< + CounterState, + CounterAction, + Partial +> = combineReducers({ counter, -}); +}) as any; export interface CounterState { counter: number; diff --git a/packages/redux-devtools/examples/counter/src/store/configureStore.dev.ts b/packages/redux-devtools/examples/counter/src/store/configureStore.dev.ts index 8e34713c..460a7224 100644 --- a/packages/redux-devtools/examples/counter/src/store/configureStore.dev.ts +++ b/packages/redux-devtools/examples/counter/src/store/configureStore.dev.ts @@ -2,34 +2,40 @@ import { createStore, applyMiddleware, compose, - PreloadedState, Reducer, + StoreEnhancer, + Middleware, } from 'redux'; import { persistState } from '@redux-devtools/core'; import thunk from 'redux-thunk'; import rootReducer, { CounterState } from '../reducers'; import DevTools from '../containers/DevTools'; +import { CounterAction } from '../actions/CounterActions'; function getDebugSessionKey() { const matches = /[?&]debug_session=([^&#]+)\b/.exec(window.location.href); return matches && matches.length > 0 ? matches[1] : null; } -const enhancer = compose( - applyMiddleware(thunk), +const enhancer: StoreEnhancer = compose( + applyMiddleware(thunk as unknown as Middleware), DevTools.instrument(), persistState(getDebugSessionKey()), ); -export default function configureStore( - initialState?: PreloadedState, -) { +export default function configureStore(initialState?: Partial) { const store = createStore(rootReducer, initialState, enhancer); if (module.hot) { module.hot.accept('../reducers', () => // eslint-disable-next-line @typescript-eslint/no-require-imports - store.replaceReducer(require('../reducers').default as Reducer), + store.replaceReducer( + require('../reducers').default as Reducer< + CounterState, + CounterAction, + Partial + >, + ), ); } diff --git a/packages/redux-devtools/examples/counter/src/store/configureStore.prod.ts b/packages/redux-devtools/examples/counter/src/store/configureStore.prod.ts index f9007410..b7c04365 100644 --- a/packages/redux-devtools/examples/counter/src/store/configureStore.prod.ts +++ b/packages/redux-devtools/examples/counter/src/store/configureStore.prod.ts @@ -1,11 +1,9 @@ -import { createStore, applyMiddleware, PreloadedState } from 'redux'; +import { createStore, applyMiddleware, Middleware } from 'redux'; import thunk from 'redux-thunk'; import rootReducer, { CounterState } from '../reducers'; -const enhancer = applyMiddleware(thunk); +const enhancer = applyMiddleware(thunk as unknown as Middleware); -export default function configureStore( - initialState?: PreloadedState, -) { +export default function configureStore(initialState?: Partial) { return createStore(rootReducer, initialState, enhancer); } diff --git a/packages/redux-devtools/examples/counter/src/store/configureStore.ts b/packages/redux-devtools/examples/counter/src/store/configureStore.ts index a7bd9046..99aae729 100644 --- a/packages/redux-devtools/examples/counter/src/store/configureStore.ts +++ b/packages/redux-devtools/examples/counter/src/store/configureStore.ts @@ -1,9 +1,9 @@ -import { PreloadedState, Store } from 'redux'; +import { Store } from 'redux'; import { CounterState } from '../reducers'; import { CounterAction } from '../actions/CounterActions'; const configureStore: ( - initialState?: PreloadedState, + initialState?: Partial, ) => Store = process.env.NODE_ENV === 'production' ? // eslint-disable-next-line @typescript-eslint/no-require-imports