/** * 反应 * @param target * @param handler */ export default function defineReactive>( target: T, handler: Record ): T { return new Proxy(target || {}, { set(target: T, key: PropertyKey, value: any, receiver: any): boolean { if (handler.set) { handler.set.call(target, target, key, value, receiver); } return Reflect.set(target, key, value, receiver); }, get(target: T, key: string | symbol, receiver: any): any { if (handler.get) { handler.get.call(target, target, key, receiver); } return Reflect.get(target, key, receiver); }, deleteProperty: (target: T, key: PropertyKey): boolean => { if (handler.deleteProperty) { handler.deleteProperty.call(target, target, key); } return Reflect.deleteProperty(target, key); } }); }