Small (< 600Byte), type-safe event emitter that support old browsers
npm i @byungi/event-emitter
<script src="https://unpkg.com/@byungi/event-emitter"></script>
<script>
const emitter = new EventEmitter.default();
</script>
<script type="module">
import EventEmitter from 'https://unpkg.com/@byungi/event-emitter/dist/index.esm.js'
const emitter = new EventEmitter();
</script>
interface Events {
a(): void
b(a: number, b: string): void
}
const emitter = new EventEmitter<Events>()
// ✔️ Compiled.
emitter.on('a', () => { /.../ })
emitter.on('b', (a, b) => { /.../ })
emitter.emit('a')
emitter.emit('b', 100, 'test')
// ❌ Compile error.
emitter.on('a', (a, b) => { /.../ })
emitter.on('b', (other:boolean) => { /.../ })
emitter.on('c', () => { /.../ })
emitter.emit('a', 100, 'test')
emitter.emit('b')
emitter.emit('c')
IE6+
Create an event emitter instance.
Add an event listener. Returns function to off.
const off = emitter.on('a', listener)
off() // == emitter.off('a', listener)
Remove an event listener(s).
Returns whether there is an event listener.
Emit event to listeners.
Add an event listener that runs once.
MIT