export function createReactive(initialState: T, onChange: (state: T) => void): T { const handler: ProxyHandler = { get(target, prop, receiver) { const value = Reflect.get(target, prop, receiver); if (typeof value === "object" && value !== null) return new Proxy(value, handler); return value; }, set(target, prop, value, receiver) { const oldValue = Reflect.get(target, prop, receiver); const success = Reflect.set(target, prop, value, receiver); if (success && oldValue !== value) onChange(initialState); return success; }, deleteProperty(target, prop) { const success = Reflect.deleteProperty(target, prop); if (success) onChange(initialState); return success; }, }; return new Proxy(initialState, handler); }