1interface ProxyHandler<T extends object> { 2 apply?(target: T, thisArg: any, argArray: any[]): any; 3 construct?(target: T, argArray: any[], newTarget: Function): object; 4 defineProperty?(target: T, p: string | symbol, attributes: PropertyDescriptor): boolean; 5 deleteProperty?(target: T, p: string | symbol): boolean; 6 get?(target: T, p: string | symbol, receiver: any): any; 7 getOwnPropertyDescriptor?(target: T, p: string | symbol): PropertyDescriptor | undefined; 8 getPrototypeOf?(target: T): object | null; 9 has?(target: T, p: string | symbol): boolean; 10 isExtensible?(target: T): boolean; 11 ownKeys?(target: T): ArrayLike<string | symbol>; 12 preventExtensions?(target: T): boolean; 13 set?(target: T, p: string | symbol, value: any, receiver: any): boolean; 14 setPrototypeOf?(target: T, v: object | null): boolean; 15} 16 17interface ProxyConstructor { 18 revocable<T extends object>(target: T, handler: ProxyHandler<T>): { proxy: T; revoke: () => void; }; 19 new <T extends object>(target: T, handler: ProxyHandler<T>): T; 20} 21declare var Proxy: ProxyConstructor; 22