@gongt/ts-stl-client
Version:
32 lines (31 loc) • 1.78 kB
TypeScript
import { IAData, IReduxActionConstructor, ISingleReducer } from "./action";
import { IReducerInfo } from "./combine-reducers";
import { IState } from "./preload-state";
export interface IVirtualStore<ValueInterface> {
getReducers?(): IReducerInfo<ValueInterface>[];
name: string;
defaultValue?: ValueInterface;
}
export interface IVirtualStoreConstructor<ValueInterface> {
new (): IVirtualStore<ValueInterface>;
name: string;
}
/** only use in this file */
export interface IVirtualStoreClass<ValueInterface> {
new (): VirtualStore<ValueInterface>;
name: string;
}
export declare function reduce<VI, IData extends IAData>(Constructor: IVirtualStoreClass<VI>, Action: IReduxActionConstructor<IData, VI>, ...reducer: ISingleReducer<VI, IData>[]): void;
export declare function reduceAny<VI, IData extends IAData>(Constructor: IVirtualStoreClass<VI>, Action: IReduxActionConstructor<IData, VI>, ...reducer: ISingleReducer<VI, IData>[]): void;
export declare function extractorOf<VI>(vs: IVirtualStoreClass<VI>): (state: IState) => VI;
export declare function subExtractorOf<VI, KT = keyof VI>(vs: IVirtualStoreClass<VI>, key: KT): (state: IState) => any;
export declare abstract class VirtualStore<ValueInterface> implements IVirtualStore<ValueInterface> {
private reducers;
readonly name: string;
readonly defaultValue: ValueInterface;
static readonly ANY: string;
constructor();
protected reduce<IData extends IAData>(Action: IReduxActionConstructor<IData, ValueInterface>, ...reducer: ISingleReducer<ValueInterface, IData>[]): void;
protected reduceAny<IData extends IAData>(Action: IReduxActionConstructor<IData, any>, ...reducer: ISingleReducer<any, IData>[]): void;
getReducers(): IReducerInfo<ValueInterface>[];
}