Files
dbgate/packages/web/src/utility/createRef.ts
2021-03-17 18:20:26 +01:00

27 lines
453 B
TypeScript

interface Reference<T> {
set(value: T);
get(): T;
reset(): void;
update(func: (arg: T) => T);
}
export default function createRef<T>(value: T): Reference<T> {
return {
value,
initValue: value,
set(value) {
this.value = value;
},
reset() {
this.value = this.initValue;
},
get() {
return this.value;
},
update(func) {
this.value = func(this.value);
},
} as Reference<T>;
}