type Callback = (entry: T) => void; export const createEventEmitter = () => { const callbacks = new Set>(); const addEventListener = (callback: Callback) => { callbacks.add(callback); }; const removeEventListener = (callback: Callback) => { callbacks.delete(callback); }; const emit = (event: T) => { callbacks.forEach((callback) => { callback(event); }); }; return { addEventListener, removeEventListener, emit, }; };