dva-toolkit
Version:
A great dva typescript support toolkit inspired by @redux/toolkit
33 lines (32 loc) • 1.23 kB
TypeScript
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;
} ? {} : {};
};