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
- Host: GitHub
- URL: https://github.com/pietile/pietile-eventemitter
- Owner: pietile
- Created: 2019-08-31T08:21:22.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2022-06-23T10:13:08.000Z (over 3 years ago)
- Last Synced: 2025-01-15T22:33:49.184Z (9 months ago)
- Topics: eventemitter, typescript
- Language: TypeScript
- Size: 610 KB
- Stars: 27
- Watchers: 3
- Forks: 1
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Pietile EventEmitter
[](https://www.npmjs.com/package/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.