Observer Pattern With Typed Subjects

Implement a typed observer pattern with subject and observer interfaces for type-safe event notification.

TypescriptData Fetching

Code

snippet
interface Observer<T>{update(data:T):void;}class Subject<T>{private observers:Set<Observer<T>>=new Set();subscribe(o:Observer<T>):()=>void{this.observers.add(o);return()=>this.observers.delete(o);}unsubscribe(o:Observer<T>){this.observers.delete(o);}notify(data:T){for(const o of this.observers)o.update(data);}}export function createSubject<T>(){return new Subject<T>();}export function createObserver<T>(handler:(data:T)=>void):Observer<T>{return{update:handler};}