# Core 类型集

# StorageType

enum StorageType {
  LOCAL = 'local',
  SESSION = 'session',
}

# IStorageModuleHelper

interface IStorageModuleHelper<T> {
  getModule(): T;
  setModule(root: T): void;
  clearModule(): void;
  getStorageKey(): string;
  getStorageType(): StorageType;
  getExistence(): boolean;
  protect(): void;
  cancelProtect(): void;
}

# IStorageModule

interface IStorageModule<T> {
  getItem<K extends keyof T>(key: K): T[K] | undefined;
  setItem<K extends keyof T>(key: K, value: T[K]): void;
  removeItem<K extends keyof T>(key: K): void;
  contains(key: string): boolean;
  clear(): void;
  size(): number;
  getHelper(): IStorageModuleHelper<T>;
}