summaryrefslogtreecommitdiff
path: root/src/util.ts
blob: f6420b99fa009174030ba5145525d06fb32400e5 (plain)
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);
    }
}