An open API service indexing awesome lists of open source software.

https://github.com/pietile/pietile-eventemitter

Tiny typed EventEmitter for TypeScript
https://github.com/pietile/pietile-eventemitter

eventemitter typescript

Last synced: 8 months ago
JSON representation

Tiny typed EventEmitter for TypeScript

Awesome Lists containing this project

README

          

# Pietile EventEmitter

[![npm version](https://badgen.net/npm/v/pietile-eventemitter?color=56C838)](https://www.npmjs.com/package/pietile-eventemitter)
[![install size](https://badgen.net/packagephobia/install/pietile-eventemitter)](https://packagephobia.now.sh/result?p=pietile-eventemitter)

Tiny typed EventEmitter for TypeScript.

## Installation

Using yarn

```sh
yarn add pietile-eventemitter
```

or using npm

```sh
npm install -S pietile-eventemitter
```

## Usage

Subclass or incapsulate `EventEmitter` specified with your events interface. Use `on` and `off`
methods to setup event handlers and `emit` to emit events.

## Example

```ts
import { EventEmitter } from 'pietile-eventemitter';

interface Events {
foo: () => void;
bar: (a: number) => void;
}

const emitter = new EventEmitter();

function onFoo() {
console.log('Foo');
}

emitter.on('foo', onFoo);
const handler = emitter.on('bar', (a: number) => {
console.log('Bar: ', a);
});

emitter.emit('foo');
emitter.emit('bar', 42);

emitter.off('foo', onFoo);
emitter.off('bar', handler);
```

## API

### `new EventEmitter()`

Create new instance of EventEmitter. `T` must be interface describing events - names and signatures.

### `on(event: K, handler: T[K]): T[K]`

Add `handler` for `event`.

Return `handler` function. Useful for anonymous handler functions.

### `off(event: K, handler: T[K]): void`

Remove `handler` for `event`

### `offAll(): void`

Remove all handlers for all events

### `emit(event: K, ...args: Parameters): void`

Emit `even` with its arguments

## Acknowledgements

[ee-ts](https://github.com/aleclarson/ee-ts) - Type-safe, isomorphic event emitters

## License

Pietile EventEmitter is MIT License.