/** * TrackedArray - 自动追踪变化的 Array 集合 * 类似 Colyseus 的 ArraySchema */ import type { Patch } from '../types.js'; export interface ChangeCallback { (patches: Patch[]): void; } /** * TrackedArray - 自动追踪所有修改操作的 Array * * @example * ```typescript * const items = new TrackedArray(); * * items.onChange((patches) => { * console.log('Changes:', patches); * }); * * items.push(new Item()); // 触发 onChange * ``` */ export declare class TrackedArray extends Array { private basePath; private changeCallbacks; private pendingChanges; private tracking; constructor(basePath?: string, ...items: T[]); /** * 开始追踪变化 */ startTracking(): void; /** * 停止追踪变化 */ stopTracking(): void; /** * 注册变化回调 */ onChange(callback: ChangeCallback): () => void; /** * 记录整个数组的替换 */ private recordArrayChange; /** * 记录单个元素的变化 */ private recordElementChange; /** * 触发变化回调 */ private emitChanges; /** * 获取待处理的变化 */ getChanges(): Patch[]; /** * 清除待处理的变化 */ clearChanges(): void; push(...items: T[]): number; pop(): T | undefined; shift(): T | undefined; unshift(...items: T[]): number; splice(start: number, deleteCount?: number, ...items: T[]): T[]; sort(compareFn?: (a: T, b: T) => number): this; reverse(): this; fill(value: T, start?: number, end?: number): this; copyWithin(target: number, start: number, end?: number): this; /** * 批量更新(不触发中间变化) */ batch(fn: () => void): void; /** * 克隆 */ clone(): TrackedArray; /** * 转换为普通数组 */ toArray(): T[]; /** * 从普通数组创建 */ static fromArray(arr: T[], basePath?: string): TrackedArray; } //# sourceMappingURL=TrackedArray.d.ts.map