1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
export class MutableValue<T> { private inner: T; constructor(inner: T) { this.inner = inner; } get value() { return this.inner } public deriveNew(mutator: (self: T) => T): MutableValue<T> { this.inner = mutator(this.inner); return new MutableValue(this.inner); } }