オブジェクトの操作(get/set等)をインターセプトする
const handler: ProxyHandler<Record<string,number>> = {
get(target, prop, receiver) {
console.log(`get: ${String(prop)}`);
return Reflect.get(target, prop, receiver);
},
set(target, prop, value) {
if (typeof value !== 'number') throw new TypeError();
return Reflect.set(target, prop, value);
},
};
const proxy = new Proxy({} as Record<string,number>, handler);
proxy.x = 42;VueのリアクティビティシステムやORMのバリデーションに使われる強力なメタプログラミング機能。Reflectは対応するデフォルト操作を提供する。