@purevue/reactivity
Version:
## 📖 Introduction
47 lines • 1.55 kB
TypeScript
import { ReactiveEffect } from '../effect';
export type DebuggerEventExtraInfo = {
target: object;
type: 'track' | 'trigger';
key: any;
newValue?: any;
oldValue?: any;
oldTarget?: Map<any, any> | Set<any>;
};
/**
* Dep 依赖管理器
* 每个响应式属性都会对应一个 Dep,管理它的订阅者 (effect)
*/
export declare class Dep {
/** 当前 dep 的版本号(触发 trigger 时递增) */
version: number;
/** 关联的 computed(如果有的话) */
/** 保存订阅该 dep 的 effects */
subs: Set<ReactiveEffect>;
constructor();
/**
* 收集依赖
*/
track(debugInfo?: DebuggerEventExtraInfo): void;
/**
* 触发依赖更新
*/
trigger(debugInfo?: DebuggerEventExtraInfo): void;
notify(debugInfo?: DebuggerEventExtraInfo): void;
}
/**
* 一个特殊的唯一 Symbol,表示对象的「遍历依赖」。
*
* - 当在 effect 里写 `for...in` 或者 `Object.keys(obj)`,
* Vue 就会对这个 ITERATE_KEY 建立依赖。
* - 这样一旦对象新增 / 删除属性(ADD / DELETE),就会触发这些依赖。
*/
export declare const ITERATE_KEY: unique symbol;
/**
* 一个特殊的唯一 Symbol,表示数组的「遍历依赖」。
*
* - 当在 effect 里写 `for...of` 或者 `arr.forEach`,
* Vue 就会对这个 ARRAY_ITERATE_KEY 建立依赖。
* - 这样一旦数组新增 / 删除索引,就会触发这些依赖。
*/
export declare const ARRAY_ITERATE_KEY: unique symbol;
//# sourceMappingURL=index.d.ts.map