event/event.ts

/**
 * @namespace event
 */

/**
 * @memberof event
 * @typedef
 */
export type CallbackType<T = any> = (...args: any[]) => T;

/**
 * @memberof event
 * @typedef
 */
export interface EventParamterInterface {
  [name: string]: CallbackType | CallbackType[];
}

/**
 * @memberof event
 * @typedef
 */
export interface EventInterface {
  on(name: string | EventParamterInterface, callback?: CallbackType | CallbackType[]): this;
  once(name: string | EventParamterInterface, callback?: CallbackType | CallbackType[]): this;
  off(name?: string, callback?: CallbackType): this;
}