@microsoft/teams.common
Version:
<p> <a href="https://www.npmjs.com/package/@microsoft/teams.common" target="_blank"> <img src="https://img.shields.io/npm/v/@microsoft/teams.common/latest" /> </a> <a href="https://www.npmjs.com/package/@microsoft/teams.common?activeTa
21 lines (19 loc) • 1.11 kB
TypeScript
type EventHandler<T = any> = (data: T) => void | Promise<void>;
interface IEventEmitter<EventTypes = Record<string, any>> {
on<Event extends keyof EventTypes>(event: Event, handler: EventHandler<EventTypes[Event]>): number;
once<Event extends keyof EventTypes>(event: Event, handler: EventHandler<EventTypes[Event]>): number;
off(id: number): void;
emit<Event extends keyof EventTypes>(event: Event, value: EventTypes[Event]): void;
}
declare class EventEmitter<EventTypes = Record<string, any>> implements IEventEmitter<EventTypes> {
protected index: number;
protected subscriptions: Map<keyof EventTypes, Array<{
readonly id: number;
readonly handler: EventHandler;
}>>;
on<Event extends keyof EventTypes>(event: Event, handler: EventHandler<EventTypes[Event]>): number;
once<Event extends keyof EventTypes>(event: Event, handler: EventHandler<EventTypes[Event]>): number;
off(id: number): void;
emit<Event extends keyof EventTypes>(event: Event, value: EventTypes[Event]): void;
}
export { EventEmitter, type EventHandler, type IEventEmitter };