import { IDestroyable } from '../common'; export interface IEventTarget extends IDestroyable { addEventListener(eventName: string, listener: XEventListener): any; removeEventListener(eventName: string, listener?: XEventListener): any; dispatchEvent(...args: Array): any; } export declare const EVENT_LISTENER_ORDER = 999; /** * 扩展的的EventListener,与原生的EventListener相区别 */ export declare type XEventListener = (...params: any[]) => void; export interface ChangedItem { key: string; oldValue: any; newValue: any; option: any; } export declare type KeyValueListener = (key: string, oldValue: any, newValue: any, option?: any) => void; /** * 数据模型事件对象接口 */ export interface IModelEventTarget extends IDestroyable { /** * 监听指定属性的改变事件 * @param propertyName * @param listener */ register(propertyName: string, listener: KeyValueListener): IModelEventTarget; /** * 撤销对指定属性改变的监听 * @param propertyName * @param listener */ revoke(propertyName: string, listener: KeyValueListener): any; /** * 触发属性改变事件 * @param item */ trigger(item: ChangedItem | Array): any; }