/** * 事件通道。 */ export interface EventChannel { /** * 监听一个事件,事件名为传入的 `name` 参数。 * @param name 事件名称 * @param callback 事件监听函数 */ on(name: string, callback: (...args: any[]) => void): void; /** * 触发一个事件,事件名为传入的 `name` 参数。 * @param name 事件名称 * @param args 执行事件监听函数的参数 */ emit(name: string, ...args: unknown[]): void; /** * 取消监听一个事件,事件名为传入的 `name` 参数。不传入 `callback` 则取消该事件名的所有监听。 * @param name 事件名称 * @param callback 事件监听函数 */ off(name: string, callback?: (...args: any[]) => void): void; /** * 监听一个事件,事件名为传入的 `name` 参数。该事件仅能触发一次,触发后取消监听。 * @param name 事件名称 * @param callback 事件监听函数 */ once(name: string, callback: (...args: any[]) => void): void; }