UNPKG

tg-map-vue3

Version:

封装 百度地图, Google地图, Here地图(未完成) 的Vue3组件库

47 lines (46 loc) 1.71 kB
import type { LatLng } from './lat-lng'; /** * ## 事件机制对比 * - DOM: add/removeEventListener, Event {type, target} * - Vue: $on/$off, 没有Event, listener直接接收数据 * - baidu: 模仿DOM * - here: 模仿DOM * - google: addListener+remove, 没有Event, listener直接接收数据 * * 综合对比之后, 决定模仿DOM的事件机制 */ export declare namespace Tg { interface Event { type: string; target: EventTarget; originalEvent?: any; } interface MouseEvent extends Event { position: LatLng; } interface EventListener { (this: EventTarget, event: Event): void; /** 唯一id */ __id__?: number; } interface EventTarget { addEventListener(type: string, listener: EventListener): void; removeEventListener(type: string, listener: EventListener): void; } /** * 拥有更详细的类型信息 * @see EventTarget * */ interface EventTargetTyped<THIS extends EventTarget, MAP extends { [k: string]: Event; }> extends EventTarget { addEventListener<K extends keyof MAP>(type: K, listener: (this: THIS, event: MAP[K]) => void): void; removeEventListener<K extends keyof MAP>(type: K, listener: (this: THIS, event: MAP[K]) => void): void; } } export declare function bindEvents(listeners: Record<string, unknown>, target: Tg.EventTarget, excludes?: string[]): void; export declare function generateNextEventListenerId(): number; /** * JS的Map/object的key都不支持自定义hashCode()/equals(), 故只能生成字符串当作key */ export declare function generateEventKey(type: string, listener: Tg.EventListener): string;