@tesler-ui/cra-template-typescript
Version:
The base TypeScript template for Create React App.
39 lines (33 loc) • 1.17 kB
text/typescript
import {
AnyAction as TeslerAnyAction,
AnyOfMap,
createActionTypes,
uActionsMap
} from '@tesler-ui/core'
import {Store} from 'redux'
import {ActionsObservable as rActionsObservable} from 'redux-observable'
import {Observable} from 'rxjs/Observable'
import {CustomActionTypes} from '../actions/types'
import {AppState} from '../interfaces/storeSlices'
/**
* A dictionary storing types of all redux actions available to the application
*/
export const actionTypes = createActionTypes(new CustomActionTypes())
/**
* Typed actions dictionary
*/
type ActionsMap = uActionsMap<CustomActionTypes>
/**
* Any action from application or from tesler-ui
*/
export type AnyAction = AnyOfMap<ActionsMap> | TeslerAnyAction
/**
* Action observable override for typed actions
*/
export interface ActionsObservable<T extends AnyAction> extends rActionsObservable<T> {
ofType<K extends keyof CustomActionTypes>(...key: K[]): ActionsObservable<ActionsMap[K]>
}
/**
* redux-observable epic override for typed actions and store
*/
export type CustomEpic = (action$: ActionsObservable<AnyAction>, store: Store<AppState>) => Observable<AnyAction | unknown>