UNPKG

dva-toolkit

Version:

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

33 lines (32 loc) 1.23 kB
import type { Action, CaseReducer, PayloadAction } from '@reduxjs/toolkit'; /** * normal dva reducers object * * @public */ export declare type DvaReducers<State = any> = { [K: string]: CaseReducer<State, PayloadAction<any>>; }; /** * dva enhancer support * * @public */ export declare 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 declare 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 declare 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 declare type ValidateDvaSliceCaseReducers<S, ACR extends DvaSliceCaseReducers<S>> = ACR & { [T in keyof ACR]: ACR[T] extends { reducer(s: S, action: any): any; } ? {} : {}; };