diff --git a/src/observable.ts b/src/observable.ts index 9cc9a9d..208ec3a 100644 --- a/src/observable.ts +++ b/src/observable.ts @@ -73,6 +73,14 @@ export class Observable extends Map< } return observers } + + /** Create an observer for the given key. */ + observe(key: ObservedKey, onChange: (change: Change) => void) { + const observers = this.get(key) + const observer = { onChange, dispose: () => observers.delete(observer) } + observers.add(observer) + return observer + } } /** Mutable state with an associated observable */