@cosmicmind/patternjs
Version:
A library of Design Patterns in TypeScript.
16 lines • 786 B
TypeScript
export type ObservableTopics = {
readonly [K: string]: unknown;
};
export type ObservableTopicMap<T extends ObservableTopics> = {
[K in keyof T]: Set<((message: T[K]) => void)>;
};
export declare class Observable<T extends ObservableTopics> {
protected readonly topics: Partial<ObservableTopicMap<T>>;
constructor();
subscribe<K extends keyof T>(topic: K, ...fn: ((message: T[K]) => void)[]): void;
once<K extends keyof T>(topic: K, ...fn: ((message: T[K]) => void)[]): void;
unsubscribe<K extends keyof T>(topic: K, ...fn: ((message: T[K]) => void)[]): void;
protected publish<K extends keyof T>(topic: K, message: T[K]): () => void;
protected publishSync<K extends keyof T>(topic: K, message: T[K]): void;
}
//# sourceMappingURL=Observable.d.ts.map