1.0.1 • Published 3 years ago

@prezly/typed-events v1.0.1

Weekly downloads
16
License
MIT
Repository
github
Last release
3 years ago

@prezly/typed-events

Version License Build Prettier

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/typed-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/prezlytyped-events-demo-2k7pd

import Events from '@prezly/typed-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.