import { AxiosInstance } from 'axios'; import { Action, BaseStoreConfig, BaseStoreStaticConfig } from './types'; import { Task } from 'redux-saga'; import SagaRunner, { Saga } from './SagaRunner'; export default class BaseStore { /** * 静态对象是否已进行初始化 * @type {boolean} */ static initialized: boolean; /** * 默认的sagaRunner对象,在init静态方法中创建 */ static sagaRunner: SagaRunner; /** * 默认的axios对象,在init静态方法中创建 */ static http: AxiosInstance; static keyMapStore: { [key: string]: BaseStore; }; /** * 见BaseStoreConfig.key */ key: string; /** * 同BaseStore.http */ http: AxiosInstance; /** * baseStoreConfig.sagaRunner 或 BaseStore.sagaRunner */ sagaRunner: SagaRunner; private _sagaRunner; /** * 见BaseStoreConfig.bindState */ private bindState; /** * 见BaseStoreConfig.apiResToState */ private apiResToState; /** * 初始化静态字段 * @param {BaseStoreStaticConfig} baseStoreConfig */ static init(baseStoreConfig?: BaseStoreStaticConfig): void; /** * 重置静态字段 */ static reset(): void; /** * 根据key获取Store * @param {string} key * @returns {BaseStore | null} */ static getStore(key: string): BaseStore; constructor(baseStoreConfig?: BaseStoreConfig); /** * 清理 */ destroy(): void; /** * 根据key获取Store * @param {string} key * @returns {BaseStore | null} */ getStore(key: string): BaseStore; /** * 派发一个action * @param {Action} action * @returns {Action} */ dispatch(action: Action): Action; /** * 执行Saga方法 * @param {Saga} saga 要执行的saga方法 * @param args saga方法的参数列表 * @returns {Task} sagaTask */ runSaga(saga: Saga, ...args: any[]): Task; private processDecoratedMethods(); private runCallWithSaga(funcName, apiConfig); }