import EventEmitter from 'eventemitter3'; import type { SyntheticEvent } from './synthetic-event'; import type { SyntheticEventListener, SyntheticEventTarget } from './types'; /** * EventKey 会根据是否 capture 决定后缀 * * 以 `click` 为例,在 capture 阶段会被转换为 `clickcapture` * */ type EventKey = string & { tag: 'EventKey'; }; export declare class SyntheticEventDispatcher extends EventEmitter { /** * _events 是 EventEmitter 的私有成员 */ private _events; addEventListener(type: string, listener: SyntheticEventListener, options?: boolean | AddEventListenerOptions): void; static getEventKey(type: string, capture?: boolean): EventKey; /** * 发射一个事件 * * 在内部会判断 isImmediatePropagationStopped() 然后停止剩余事件处理函数 * * @param key 指定事件类型,可以通过 SyntheticEventDispatcher.getEventKey 获得 * @param event 要发射的事件 * @returns */ emitEvent(key: EventKey, event: SyntheticEvent): void; removeEventListener(type: string, listener: SyntheticEventListener, options?: boolean | EventListenerOptions): void; } export {};