UNPKG

@minto-ai/type-writer

Version:

流式打字机效果组件,提供逐字符显示文本的打字机效果

42 lines (34 loc) 898 B
interface EventCallback { (...args: any[]): any } class EventBus<E = any> { private listeners: Map<E, EventCallback[]> = new Map() on(eventName: E, callback: EventCallback): void { const callbacks = this.listeners.get(eventName) if (callbacks) { callbacks.push(callback) } else { this.listeners.set(eventName, [callback]) } } emit<T = any>(eventName: E, data?: T): void { const callbacks = this.listeners.get(eventName) if (callbacks) { callbacks.forEach((callback) => { callback(data) }) } } clear(): void { this.listeners.clear() } } let eventBusInstance: EventBus | null = null function createEventBus<E>(): EventBus<E> { if (!eventBusInstance) { eventBusInstance = new EventBus<E>() } return eventBusInstance as EventBus<E> } export { createEventBus }