diff --git a/src/createStore.ts b/src/createStore.ts index da754875a8..f6ab9e2cf2 100644 --- a/src/createStore.ts +++ b/src/createStore.ts @@ -2,13 +2,13 @@ import $$observable from 'symbol-observable' import { Store, - Reducer, PreloadedState, StoreEnhancer, Dispatch, Observer -} from '..' +} from './types/store' import { Action } from './types/actions' +import { Reducer } from './types/reducers' import ActionTypes from './utils/actionTypes' import isPlainObject from './utils/isPlainObject' @@ -50,7 +50,7 @@ export default function createStore( reducer: Reducer, preloadedState?: PreloadedState | StoreEnhancer, enhancer?: StoreEnhancer -) { +): Store & Ext { if ( (typeof preloadedState === 'function' && typeof enhancer === 'function') || (typeof enhancer === 'function' && typeof arguments[3] === 'function') @@ -72,7 +72,9 @@ export default function createStore( throw new Error('Expected the enhancer to be a function.') } - return enhancer(createStore)(reducer, preloadedState as PreloadedState) + return enhancer(createStore)(reducer, preloadedState as PreloadedState< + S + >) as Store & Ext } if (typeof reducer !== 'function') { @@ -315,12 +317,12 @@ export default function createStore( // the initial state tree. dispatch({ type: ActionTypes.INIT } as A) - const store: Store = ({ + const store: Store & Ext = ({ dispatch: dispatch as Dispatch, subscribe, getState, replaceReducer, [$$observable]: observable - } as unknown) as Store + } as unknown) as Store & Ext return store }