interface Event { type: string; callback: (args: any) => void; } interface Dispatch { type: string; params: any; } const __EventMessage__: Event[] = []; export function onEventMessage(type: T['type'], callback: (params: T['params']) => void) { const events = __EventMessage__; events.push({ type, callback }); } export function offEventMessage(type: T['type'], callback: (params: T['params']) => void) { const events = __EventMessage__; const index = events.findIndex((item) => item.type === type && item.callback === callback); if (index >= 0) { events.splice(index, 1); } } export function dispatchEvent(type: T['type'], params: T['params']) { // const events = getGlobalData().__EventMessage__; const events = __EventMessage__; const currentEvents = events.filter((item) => item.type === type); for (const item of currentEvents) { item.callback(params); } }