tsee
TypeScript icon, indicating that this package has built-in type declarations

1.3.4 • Public • Published

NPM Version NPM Downloads

tsee

Typed EventEmitter implemented with typed args, based on nodejs EventEmitter.
Fully implements NodeJS.EventEmitter type, provides interface & proxy class.

Check 'tseep'! Same api but world fastest event emitter

Install & use

npm i tsee

Simple usage:

import { EventEmitter } from "tsee";

const events = new EventEmitter<{
    foo: (a: number, b: string) => void;
}>();

// foo's arguments is fully type checked
events.emit("foo", 123, "hello world");

Cast any other compatible to NodeJS.EventEmitter to typed:

import { asTypedEventEmitter } from "tsee";

const typedEmitter = asTypedEventEmitter<{
    foo: (a: number, b: string) => void;
    boo: (a: number, b: string) => void;
}>(myEmitter);

typedEmitter.emit("foo", 123, "hello world");

Advenced usage for non default event emitters

If you use custom EventEmitter implementation, you can simply cast it to tsee.IEventEmitter interface:

import { CustomEventEmitter } from 'my-event-emitter';
import * as tsee from 'tsee';

// Simple type case
const typed = new CustomEventEmitter() as any as tsee.IEventEmitter<{ ... }>;

// Functional cast with `NodeJS.EventEmitter` type constraints
const typed = asTypedEventEmitter<{ ... }>(new CustomEventEmitter());

tsee.EventEmitter class is implemented EventEmitter from 'events' package.

Api

EventEmitter<T> where T extends { [eventName]: Call signature }.

EventEmitter.emit's args is fully typed based on events map.

For foo event in example above, signature is: emit(eventName: 'foo', a: number, b: string).

Package Sidebar

Install

npm i tsee

Weekly Downloads

3,652

Version

1.3.4

License

MIT

Unpacked Size

21.4 kB

Total Files

13

Last publish

Collaborators

  • morglod