Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 6c43c07

Browse files
committedAug 30, 2019
update tests to reflect complete examples
1 parent a24fafd commit 6c43c07

File tree

1 file changed

+58
-8
lines changed

1 file changed

+58
-8
lines changed
 

‎test/typescript/enhancers.ts

+58-8
Original file line numberDiff line numberDiff line change
@@ -135,13 +135,13 @@ function replaceReducerExtender() {
135135

136136
const newStore = store.replaceReducer(newReducer)
137137
newStore.getState().test
138-
store.getState().extraField
138+
newStore.getState().extraField
139139
// typings:expect-error
140-
store.getState().wrongField
140+
newStore.getState().wrongField
141141

142-
const res: string = store.method()
142+
const res: string = newStore.method()
143143
// typings:expect-error
144-
store.wrongMethod()
144+
newStore.wrongMethod()
145145
}
146146

147147
function mhelmersonExample() {
@@ -206,24 +206,56 @@ function mhelmersonExample() {
206206

207207
const store = createStore(reducer, enhancer)
208208
store.replaceReducer(reducer)
209+
210+
store.getState().extraField
211+
// typings:expect-error
212+
store.getState().wrongField
213+
// typings:expect-error
214+
store.getState().test
215+
216+
const newReducer = (
217+
state: { test: boolean } = { test: true },
218+
_: AnyAction
219+
) => state
220+
221+
const newStore = store.replaceReducer(newReducer)
222+
newStore.getState().test
223+
newStore.getState().extraField
224+
// typings:expect-error
225+
newStore.getState().wrongField
209226
}
210227
}
211228

212229
function finalHelmersonExample() {
213-
function persistReducer<S>(config: any, reducer: S): S {
214-
return reducer
230+
interface ExtraState {
231+
foo: string
232+
}
233+
234+
function persistReducer<S, A extends AnyAction>(
235+
config: any,
236+
reducer: Reducer<S, A>
237+
) {
238+
return (state: S & ExtraState | undefined, action: AnyAction) => {
239+
const newState = reducer(state, (action as unknown) as A)
240+
return {
241+
...newState,
242+
foo: 'hi'
243+
}
244+
}
215245
}
216246

217247
function persistStore<S>(store: S) {
218248
return store
219249
}
220250

221-
function createPersistEnhancer(persistConfig: any): StoreEnhancer {
251+
function createPersistEnhancer(
252+
persistConfig: any
253+
): StoreEnhancer<{}, ExtraState> {
222254
return createStore => <S, A extends Action = AnyAction>(
223255
reducer: Reducer<S, A>,
224256
preloadedState?: any
225257
) => {
226-
const persistedReducer = persistReducer(persistConfig, reducer)
258+
const persistedReducer = persistReducer<S, A>(persistConfig, reducer)
227259
const store = createStore(persistedReducer, preloadedState)
228260
const persistor = persistStore(store)
229261

@@ -238,4 +270,22 @@ function finalHelmersonExample() {
238270
}
239271
}
240272
}
273+
274+
const store = createStore(reducer, createPersistEnhancer('hi'))
275+
276+
store.getState().foo
277+
// typings:expect-error
278+
store.getState().wrongField
279+
280+
const newReducer = (
281+
state: { test: boolean } = { test: true },
282+
_: AnyAction
283+
) => state
284+
285+
const newStore = store.replaceReducer(newReducer)
286+
newStore.getState().test
287+
// typings:expect-error
288+
newStore.getState().whatever
289+
// typings:expect-error
290+
newStore.getState().wrongField
241291
}

0 commit comments

Comments
 (0)
Please sign in to comment.