JSFiddle - React, Tailwind, and code Playground

by Tonio Loewald

TypeScript

const regHandler = (path: string | null) => ({
  get(target, prop) {
    switch (prop) {
      case '__path':
        return path + '.' + prop
    }
    return target[prop];
  },
  set(target, prop, value) {
    target[prop] = value;
    return true;
  }
})

class Reg {
	path: string;
  _value: unknown;

  get value() {
    return new Proxy(this._value, regHandler())
  }

  constructor(v, path = string | null) {
  	this.path = path
    this._value = v
  }
}

const reg = new Reg({})

reg.foo = {
  bar: 17
}