@stringsync/vexml
Version:
MusicXML to Vexflow
17 lines (16 loc) • 625 B
TypeScript
import { EventListener, AnyEventMap } from './types';
export type Subscription<T extends AnyEventMap, N extends keyof T> = {
id: number;
name: N;
listener: EventListener<T[N]>;
};
/** Class that tracks pubsub subscribers. */
export declare class Topic<T extends AnyEventMap> {
private id;
private subscriptions;
hasSubscribers<N extends keyof T>(name: N): boolean;
publish<N extends keyof T>(name: N, payload: T[N]): void;
subscribe<N extends keyof T>(name: N, listener: EventListener<T[N]>): number;
unsubscribe(id: number): Subscription<T, keyof T> | null;
unsubscribeAll(): void;
}