/** * 状态订阅者回调函数类型 * @template T 状态类型 * @param state 只读的最新状态 * @param changes 发生变更的路径数组(只读) */ export type Subscriber = (state: Readonly, changes: readonly string[]) => void; /** * 响应式状态管理类,提供高效的状态管理和变更追踪功能 * @template T 状态对象类型,必须为object类型 */ export default class ReactiveState { private currentState; private subscribers; private pendingChanges; private notificationScheduled; private pathSubscribers; /** * 初始化响应式状态 * @param initialState 初始状态(会自动冻结) */ initialize(initialState: T): void; /** * 更新状态方法 * @param updater 状态更新函数(使用immer的draft机制) * @param paths 可选的手动指定变更路径(自动模式会从immer patches中提取) */ setState(updater: (draft: T) => void, paths?: string[]): void; /** * 获取当前状态 * @param cloned 是否返回克隆副本(默认false) * @returns 当前状态的只读引用或克隆副本 */ getState(cloned?: boolean): Readonly; /** * 订阅状态变更(支持路径过滤),订阅时维护路径索引 * @param subscriber 订阅回调函数 * @param paths 可选的要监听的属性路径数组 * @returns 取消订阅的函数 */ subscribe(subscriber: Subscriber, paths?: string[]): () => void; /** * 调度通知(使用微任务批量处理) */ private scheduleNotification; /** * 调试方法(开发时使用) * @param label 调试标签(默认'State') * @returns 当前实例(支持链式调用) */ debug(label?: string): this; }