@prezly/events
v2.0.3
Published
Event emitter with DOM-like EventTarget API & strong TypeScript typings
Downloads
635
Keywords
Readme
@prezly/events
Event emitter with DOM-like EventTarget
API & strong TypeScript typings.
Alternatives
There's this great mitt package which implements EventEmitter
interface from node.js but it does not have strong typings. There's a PR pending with this feature, but there's been no activity for 7 months. Perhaps in the future we might not want to maintain this @prezly/events
package. But on the other hand, we should think twice before using a package where last PR got merged over half year ago.
Example
Demo: https://codesandbox.io/s/prezlyevents-demo-2k7pd
import { Events } from '@prezly/events';
const ref = { current: 0 };
const events = new Events<{
add: number;
substract: number;
log: never; // "never" means that event has no payload
}>();
const add = (value: number) => {
ref.current += value;
};
const substract = (value: number) => {
ref.current -= value;
};
const log = () => {
console.log(ref.current);
};
// Attach event handlers
events.addEventListener('add', add);
events.addEventListener('substract', substract);
const removeLogListener = events.addEventListener('log', log);
// Dispatch events
events.dispatchEvent('add', 2);
events.dispatchEvent('substract', 5);
events.dispatchEvent('log');
// Remove event handlers
events.removeEventListener('add', add);
events.removeEventListener('substract', substract);
removeLogListener(); // this is another way to unsubscribe event listener
Brought to you by Prezly.