/**
|
* 存储驱动接口(策略模式核心抽象)
|
* 所有存储实现(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 };
|