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