UNPKG

dva-toolkit

Version:

A great dva typescript support toolkit inspired by @redux/toolkit

54 lines (48 loc) 1.19 kB
import type { Action, CaseReducer, PayloadAction } from '@reduxjs/toolkit' /** * normal dva reducers object * * @public */ export type DvaReducers<State = any> = { [K: string]: CaseReducer<State, PayloadAction<any>> } /** * dva enhancer support * * @public */ export type DvaReducerEnhancer< S = any, R extends DvaReducers<S> = DvaReducers<S>, A extends Action = PayloadAction<any> > = (reducer: R[keyof R]) => (state: S, action: A) => ReturnType<CaseReducer<S>> export type DvaReducersWithEnhancer< S = any, Reducers extends DvaReducers<S> = DvaReducers<S>, ReducerEnhancer extends DvaReducerEnhancer<S, Reducers> = DvaReducerEnhancer<S, Reducers> > = [Reducers, ReducerEnhancer] /** * dva config reducers type * * @public */ export type DvaSliceCaseReducers< S = any, Reducers extends DvaReducers<S> = DvaReducers<S>, > = DvaReducersWithEnhancer<S, Reducers> | Reducers /** * valid dva reducers case * * TODO: try to understand this func */ export type ValidateDvaSliceCaseReducers< S, ACR extends DvaSliceCaseReducers<S> > = ACR & { [T in keyof ACR]: ACR[T] extends { reducer(s: S, action: any): any } ? {} : {} }