Skip to content

KevinSnyderCodes/eventemitter-ts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eventemitter-ts

Typed EventEmitter classes for use with TypeScript.

Installation

npm install eventemitter-ts

Usage

All classes use the same interface as Node's built-in EventEmitter, but with generics for strict event types.

TypedEventEmitter

import { TypedEventEmitter } from 'eventemitter-ts';

interface Events {
    'foo': number;
    'bar': string;
}

const ee = new TypedEventEmitter<Events>();

ee.on('foo', (arg: number) => {}); // OK
ee.on('bar', (arg: string) => {}); // OK
ee.on('baz', (arg: number) => {}); // Error! 'baz' is not a valid event
ee.on('foo', (arg: string) => {}); // Error! 'foo' event does not emit argument of type string

ProtectedEventEmitter

import { ProtectedEventEmitter } from 'eventemitter-ts';

interface Events {
    'foo': number;
    'bar': string;
}

/**
 * Emits 'foo' event once every second.
 */
class MyEventEmitter extends ProtectedEventEmitter<Events> {
    constructor() {
        super();
        setInterval(() => {
            this.protectedEmit('foo', 123);
        }, 1000);
    }
}

const ee = new MyEventEmitter();
ee.on('foo', (arg: number) => {}); // OK
ee.emit('foo', 123); // NOP -- doesn't do anything, always returns false

About

Typed EventEmitter classes for use with TypeScript

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published