Why EVT ?
'evt' is intended to be a replacement for 'events'. It enables and encourages functional programming and makes heavy use of typescript's type inference features to provide type safety while keeping things concise and elegant 🍸.
Suitable for any JS runtime env (deno, node, old browser, react-native ...)
  • βœ… It is both a Deno and an NPM module.
  • βœ… Lightweight, no dependency.
  • βœ… No polyfills needed, the NPM module is transpiled down to ES3.
Can be imported in TypeScript projects using version >= 3.4 (Mar 2019) and in any plain JS projects.


There are a lot of things that can't easily be done with EventEmitter:
  • Enforcing type safety.
  • Removing a particular listener ( if the callback is an anonymous function ).
  • Adding a one-time listener for the next event that meets a condition.
  • Waiting (via a Promise) for one thing or another to happen.
    Example: waiting at most one second for the next message, stop waiting if the socket disconnects.
Why would someone pick EVT over RxJS:
  • RxJS introduces a lot of abstractions. It's a big jump from EventEmitter.
  • It is often needed to resort to custom type guards, the filter operator breaks the type inference.​
  • Tend to be quite verbose.
  • It could be months before it eventually supports Deno.
  • There is no official guideline on how to integrate it with React.
EVT is an attempt to build a lib as accessible as the EventEmitter yet much more powerfull.
Last modified 1yr ago
Copy link