gaoluyang
2026-06-24 b9a81d64cc965102c2adb70dee1d5a7397da5716
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/**
 * 存储驱动接口(策略模式核心抽象)
 * 所有存储实现(localStorage、IndexedDB、Memory 等)都需要实现此接口
 * Driver 层只负责纯粹的 KV 存取,不感知 TTL 和前缀
 */
interface IStorageDriver {
  /** 清除所有存储项 */
  clear(): Promise<void>;
 
  /** 获取存储项 */
  getItem<T>(key: string): Promise<null | T>;
 
  /** 获取所有 key */
  keys(): Promise<string[]>;
 
  /** 移除存储项 */
  removeItem(key: string): Promise<void>;
 
  /** 设置存储项 */
  setItem(key: string, value: unknown): Promise<void>;
}
 
/**
 * 带 TTL 的存储项包装结构
 * TTL 逻辑由 StorageManager 统一管理,Driver 层不感知
 */
interface StorageItem<T> {
  expiry?: number;
  value: T;
}
 
interface StorageManagerOptions {
  /** 存储驱动实例 */
  driver?: IStorageDriver;
  /** 键前缀,用于命名空间隔离 */
  prefix?: string;
}
 
export type { IStorageDriver, StorageItem, StorageManagerOptions };