import {HyperValue} from '../core/core'; import {ProxyScope} from './proxy'; export class ObjectScope extends ProxyScope { prop(hv: HyperValue, propertyName: K): HyperValue { return this.proxy( hv, () => hv.$[propertyName], value => { return { ...hv.$ as object, [propertyName]: value } as T; } ); } setProp(hv: HyperValue, propertyName: number, value: T): void; setProp(hv: HyperValue, propertyName: K, value: T[K]): void; setProp(hv: HyperValue, propertyName: K, value: T[K]) { const obj = hv.$; obj[propertyName] = value; hv.$ = obj; } getProp(hv: HyperValue, propertyName: number): T; getProp(hv: HyperValue, propertyName: K): T[K]; getProp(hv: HyperValue, propertyName: K): T[K] { return hv.$[propertyName]; } }