mirror of https://github.com/msgbyte/tailchat
feat: 增加通用事件中心
parent
c558839f06
commit
7bf5c0e3d8
@ -0,0 +1,32 @@
|
||||
import { EventEmitter } from 'events';
|
||||
|
||||
/**
|
||||
* 共享事件类型
|
||||
*/
|
||||
export interface SharedEventMap {
|
||||
/**
|
||||
* 修改配色方案
|
||||
*/
|
||||
changeColorScheme: (scheme: string) => void;
|
||||
}
|
||||
export type SharedEventType = keyof SharedEventMap;
|
||||
|
||||
const bus = new EventEmitter();
|
||||
|
||||
/**
|
||||
* 事件中心
|
||||
*/
|
||||
export const sharedEvent = {
|
||||
on<T extends SharedEventType>(eventName: T, listener: SharedEventMap[T]) {
|
||||
bus.on(eventName, listener);
|
||||
},
|
||||
off<T extends SharedEventType>(eventName: T, listener: SharedEventMap[T]) {
|
||||
bus.off(eventName, listener);
|
||||
},
|
||||
emit<T extends SharedEventType>(
|
||||
eventName: T,
|
||||
...args: Parameters<SharedEventMap[T]>
|
||||
) {
|
||||
bus.emit(eventName, ...args);
|
||||
},
|
||||
};
|
Loading…
Reference in New Issue