UNPKG

@gongt/ts-stl-client

Version:
32 lines (31 loc) 1.78 kB
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>[]; }