import { Draft } from "immer" export type DraftDataRef = Draft<{ current: T }> export type Updater = (draftDataRef: DraftDataRef) => void export type AnyFn = (...args: any) => any export type MapStateFn = (data: D) => any export interface PropEffect { trackId: number pathId?: number // track Proxy data like: data.xxxx ✔ hasSubProp: boolean triggerHook: AnyFn } export type TargetMap = Map> interface PathIdItem { updateUpperPropEffectHasSubPropHook: () => void } export interface TrackIdItem { isDataRefCurrPropEffHasSubPropChanged: boolean pathIdMap: Map> clearEffectSet: Set<() => void> } export type WrappedDataRef = { current: T }