import { injectable } from 'inversify'; import { IBusMode } from '../../common/bus'; export type MapStoreItem = Map; export interface IMapStore extends IBusMode { register(key: string, item: MapStoreItem, cover: boolean): IMapStore; unregister(key: string): IMapStore; get(key: string): MapStoreItem | undefined; } @injectable() export class MapStore implements IMapStore { /** Map存储 */ private _map: Map = new Map(); /** 注册到总线 * @param cover 是否覆盖 */ register(key: string, target: MapStoreItem, cover: boolean = false) { this._map.has(key) ? cover && this._map.set(key, target) : this._map.set(key, target); return this; } unregister(key: string) { this._map.has(key) && this._map.delete(key); return this; } get(key: string) { return this._map.get(key); } dispose() { this._map.forEach(item => item.clear()); this._map.clear(); } }