@baileyherbert/events
v1.0.1
Published
A strongly typed event emitter.
Downloads
291
Maintainers
Readme
Events
This is an alternative event emitter that works on all platforms. It allows you to specify the event types, and keeps
the emit
method protected.
npm install @baileyherbert/events
Example
Extend the EventEmitter
class and provide an enumeration of tuples for <T>
:
import { EventEmitter } from '@baileyherbert/events';
export class Chat extends EventEmitter<Events> {
protected _onUserConnected(user: User) {
this.emit('connected', user.username);
}
}
type Events = {
/**
* These JSDoc comments will show up in intellisense too!
*/
chat: [username: string, message: string];
connected: [username: string];
disconnected: [username: string];
};
Then you can listen to those events like usual, but with autocompleted event names and typed arguments. 👍
const chat = new Chat();
chat.on('connected', username => {});
chat.on('disconnected', username => {});
chat.on('chat', (username, message) => {});