@giapspzoo/event-emitter
v1.0.0
Published
A simple isomorphic, strongly typed event emitter for TypeScript and JavaScript. It allows you to declare your event map once and get full IntelliSense and type-safety for all listeners and emitted events.
Downloads
48
Readme
@giapspzoo/event-emitter
A simple isomorphic, strongly typed event emitter for TypeScript and JavaScript.
It allows you to declare your event map once and get full IntelliSense and type-safety for all listeners and emitted events.
Why?
📦 Zero dependencies
⚡ Lightweight & isomorphic
🛡️ Full TypeScript support with inferred payloads
🔄 Simple API
Installation
npm i @giapspzoo/event-emitterBasic example
import EventEmitter from "@giapspzoo/event-emitter";
// Define your event map.
type Events = {
push: { pushedItem: string }; // event with payload
clear: void; // event without payload
};
const emitter = new EventEmitter<Events>();
// Add event listeners.
emitter.on("push", ({ pushedItem }) => {
console.log("Item pushed:", pushedItem);
});
emitter.on("clear", () => {
console.log("Cleared!");
});
// Emit events according to their declared types.
emitter.emit("push", { pushedItem: "foo" });
emitter.emit("clear");
// Remove a single listener...
const onClear = () => console.log("Cleared!");
emitter.on("clear", onClear);
emitter.off("clear", onClear);
// ...or remove all attached listeners.
emitter.removeAllListeners();API
on(event: string, handler: (payload: P | void) => void) => void
Registers a new event handler.
off(event: string, handler: (payload: P | void) => void) => void
Removes a previously registered handler.
emit(event: string, payload: P | void) => void
Emits an event.
removeAllListeners() => void
Clears all listeners for all events.
License
MIT
