{"_id":"typed-emitter","_rev":"4211802","name":"typed-emitter","description":"Strictly typed event emitter interface for TypeScript 3.","dist-tags":{"latest":"2.1.0","testing":"1.5.0-from-event"},"maintainers":[{"name":"andywer","email":""}],"time":{"modified":"2026-03-04T17:06:39.000Z","created":"2016-04-23T00:37:40.379Z","2.1.0":"2022-01-22T21:11:11.228Z","2.0.0":"2022-01-16T09:24:07.185Z","1.5.0-from-event":"2021-11-13T19:56:24.086Z","1.4.0":"2021-10-14T08:43:49.858Z","1.3.1":"2020-09-23T19:33:40.267Z","1.3.0":"2020-08-16T10:06:41.866Z","1.2.0":"2020-05-27T07:38:14.230Z","1.1.0":"2020-05-24T15:44:44.664Z","1.0.0":"2020-03-29T16:56:21.470Z","0.2.0":"2019-10-21T19:32:59.749Z","0.1.0":"2018-09-27T18:11:39.431Z","0.0.2":"2016-04-23T12:53:41.849Z","0.0.1":"2016-04-23T00:37:40.379Z"},"users":{},"author":{"name":"Andy Wermke","url":"https://github.com/andywer"},"repository":{"type":"git","url":"git+https://github.com/andywer/typed-emitter.git"},"versions":{"2.1.0":{"name":"typed-emitter","version":"2.1.0","license":"MIT","description":"Strictly typed event emitter interface for TypeScript 3.","author":{"name":"Andy Wermke","url":"https://github.com/andywer"},"repository":{"type":"git","url":"git+https://github.com/andywer/typed-emitter.git"},"keywords":["event","emitter","typescript","interface"],"main":"./types.js","types":"./index.d.ts","optionalDependencies":{"rxjs":"*"},"devDependencies":{"rxjs":"^7.5.2"},"gitHead":"9a139b6fa0ec6b0db6141b5b756b784e4f7ef4e4","bugs":{"url":"https://github.com/andywer/typed-emitter/issues"},"homepage":"https://github.com/andywer/typed-emitter#readme","dependencies":{"rxjs":"*"},"_id":"typed-emitter@2.1.0","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"shasum":"ca78e3d8ef1476f228f548d62e04e3d4d3fd77fb","size":3141,"noattachment":false,"key":"/typed-emitter/-/typed-emitter-2.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/typed-emitter/download/typed-emitter-2.1.0.tgz"},"_npmUser":{"name":"andywer","email":"github@andywer.com"},"directories":{},"maintainers":[{"name":"andywer","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typed-emitter_2.1.0_1642885871084_0.6784502474265892"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-01-22T21:21:20.162Z","publish_time":1642885871228,"_cnpm_publish_time":1642885871228},"2.0.0":{"name":"typed-emitter","version":"2.0.0","license":"MIT","description":"Strictly typed event emitter interface for TypeScript 3.","author":{"name":"Andy Wermke","url":"https://github.com/andywer"},"repository":{"type":"git","url":"git+https://github.com/andywer/typed-emitter.git"},"keywords":["event","emitter","typescript","interface"],"main":"./types.js","types":"./index.d.ts","optionalDependencies":{"rxjs":"*"},"gitHead":"2f837c3eb67852c8c0bc660ad0d6c71d7e75cd53","bugs":{"url":"https://github.com/andywer/typed-emitter/issues"},"homepage":"https://github.com/andywer/typed-emitter#readme","dependencies":{"rxjs":"*"},"_id":"typed-emitter@2.0.0","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"shasum":"65becead654b51f158b6d8cb9e4efd9102928afd","size":3093,"noattachment":false,"key":"/typed-emitter/-/typed-emitter-2.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/typed-emitter/download/typed-emitter-2.0.0.tgz"},"_npmUser":{"name":"andywer","email":"github@andywer.com"},"directories":{},"maintainers":[{"name":"andywer","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typed-emitter_2.0.0_1642325046718_0.12439220288660136"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-01-16T09:24:13.903Z","publish_time":1642325047185,"_cnpm_publish_time":1642325047185},"1.5.0-from-event":{"name":"typed-emitter","version":"1.5.0-from-event","license":"MIT","description":"Strictly typed event emitter interface for TypeScript 3.","author":{"name":"Andy Wermke","url":"https://github.com/andywer"},"repository":{"type":"git","url":"git+https://github.com/andywer/typed-emitter.git"},"keywords":["event","emitter","typescript","interface"],"main":"./types.js","types":"./index.d.ts","optionalDependencies":{"rxjs":"*"},"readmeFilename":"README.md","gitHead":"9587c7c6cff64aaa10cc415361861e8a719a1e62","bugs":{"url":"https://github.com/andywer/typed-emitter/issues"},"homepage":"https://github.com/andywer/typed-emitter#readme","dependencies":{"rxjs":"*"},"_id":"typed-emitter@1.5.0-from-event","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"shasum":"ec5bcecbd1c7c702ca2965bdf60f0462875f60ef","size":3114,"noattachment":false,"key":"/typed-emitter/-/typed-emitter-1.5.0-from-event.tgz","tarball":"http://registry.cnpm.dingdandao.com/typed-emitter/download/typed-emitter-1.5.0-from-event.tgz"},"_npmUser":{"name":"andywer","email":"github@andywer.com"},"directories":{},"maintainers":[{"name":"andywer","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typed-emitter_1.5.0-from-event_1636833383941_0.8538732069247874"},"_hasShrinkwrap":false,"publish_time":1636833384086,"_cnpm_publish_time":1636833384086,"_cnpmcore_publish_time":"2021-12-16T15:20:46.694Z"},"1.4.0":{"name":"typed-emitter","version":"1.4.0","license":"MIT","description":"Strictly typed event emitter interface for TypeScript 3.","author":{"name":"Andy Wermke","url":"https://github.com/andywer"},"repository":{"type":"git","url":"git+https://github.com/andywer/typed-emitter.git"},"keywords":["event","emitter","typescript","interface"],"main":"./types.js","types":"./index.d.ts","gitHead":"d74555b38c8c891c46ace12fcbb84a7871b505f4","bugs":{"url":"https://github.com/andywer/typed-emitter/issues"},"homepage":"https://github.com/andywer/typed-emitter#readme","_id":"typed-emitter@1.4.0","_nodeVersion":"12.22.3","_npmVersion":"6.14.13","dist":{"shasum":"38c6bf1224e764906bb20cb0b458fa914100607c","size":2469,"noattachment":false,"key":"/typed-emitter/-/typed-emitter-1.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/typed-emitter/download/typed-emitter-1.4.0.tgz"},"_npmUser":{"name":"andywer","email":"github@andywer.com"},"directories":{},"maintainers":[{"name":"andywer","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typed-emitter_1.4.0_1634201029723_0.9554556113631574"},"_hasShrinkwrap":false,"publish_time":1634201029858,"_cnpm_publish_time":1634201029858,"_cnpmcore_publish_time":"2021-12-16T15:20:46.933Z"},"1.3.1":{"name":"typed-emitter","version":"1.3.1","license":"MIT","description":"Strictly typed event emitter interface for TypeScript 3.","author":{"name":"Andy Wermke","url":"https://github.com/andywer"},"repository":{"type":"git","url":"git+https://github.com/andywer/typed-emitter.git"},"keywords":["event","emitter","typescript","interface"],"main":"./index.d.ts","gitHead":"1c10b7fb450e19f715d01b3a31a70b8cf5939cb5","bugs":{"url":"https://github.com/andywer/typed-emitter/issues"},"homepage":"https://github.com/andywer/typed-emitter#readme","_id":"typed-emitter@1.3.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"shasum":"c98d71551a99d5f08ba9085ee44b8fc9b2357502","size":2392,"noattachment":false,"key":"/typed-emitter/-/typed-emitter-1.3.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/typed-emitter/download/typed-emitter-1.3.1.tgz"},"maintainers":[{"name":"andywer","email":""}],"_npmUser":{"name":"andywer","email":"github@andywer.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typed-emitter_1.3.1_1600889620069_0.7935502566857398"},"_hasShrinkwrap":false,"publish_time":1600889620267,"_cnpm_publish_time":1600889620267,"_cnpmcore_publish_time":"2021-12-16T15:20:47.239Z"},"1.3.0":{"name":"typed-emitter","version":"1.3.0","license":"MIT","description":"Strictly typed event emitter interface for TypeScript 3.","author":{"name":"Andy Wermke","url":"https://github.com/andywer"},"repository":{"type":"git","url":"git+https://github.com/andywer/typed-emitter.git"},"keywords":["event","emitter","typescript","interface"],"gitHead":"b6a1cd7c040e40ffbfa4a188785c019c084ce50a","bugs":{"url":"https://github.com/andywer/typed-emitter/issues"},"homepage":"https://github.com/andywer/typed-emitter#readme","_id":"typed-emitter@1.3.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"shasum":"cb49ce288c9f066afc22ffe236a88879163eb0ee","size":2381,"noattachment":false,"key":"/typed-emitter/-/typed-emitter-1.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/typed-emitter/download/typed-emitter-1.3.0.tgz"},"maintainers":[{"name":"andywer","email":""}],"_npmUser":{"name":"andywer","email":"github@andywer.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typed-emitter_1.3.0_1597572401696_0.4017756981930143"},"_hasShrinkwrap":false,"publish_time":1597572401866,"_cnpm_publish_time":1597572401866,"_cnpmcore_publish_time":"2021-12-16T15:20:47.470Z"},"1.2.0":{"name":"typed-emitter","version":"1.2.0","license":"MIT","description":"Strictly typed event emitter interface for TypeScript 3.","author":{"name":"Andy Wermke","url":"https://github.com/andywer"},"repository":{"type":"git","url":"git+https://github.com/andywer/typed-emitter.git"},"keywords":["event","emitter","typescript","interface"],"gitHead":"5637e20ef26019d7f22ddc9bad0d5b73167dbde8","bugs":{"url":"https://github.com/andywer/typed-emitter/issues"},"homepage":"https://github.com/andywer/typed-emitter#readme","_id":"typed-emitter@1.2.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"shasum":"2b2b42ba78b3986ed0f37cc17b14d393022bc1e5","size":2222,"noattachment":false,"key":"/typed-emitter/-/typed-emitter-1.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/typed-emitter/download/typed-emitter-1.2.0.tgz"},"maintainers":[{"name":"andywer","email":""}],"_npmUser":{"name":"andywer","email":"andy.dev@next-step-software.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typed-emitter_1.2.0_1590565094019_0.3919410484433874"},"_hasShrinkwrap":false,"publish_time":1590565094230,"_cnpm_publish_time":1590565094230,"_cnpmcore_publish_time":"2021-12-16T15:20:47.675Z"},"1.1.0":{"name":"typed-emitter","version":"1.1.0","license":"MIT","description":"Strictly typed event emitter interface for TypeScript 3.","author":{"name":"Andy Wermke","url":"https://github.com/andywer"},"repository":{"type":"git","url":"git+https://github.com/andywer/typed-emitter.git"},"keywords":["event","emitter","typescript","interface"],"gitHead":"fba2cc2ea1899f88026f6d193b6f1647074b8100","bugs":{"url":"https://github.com/andywer/typed-emitter/issues"},"homepage":"https://github.com/andywer/typed-emitter#readme","_id":"typed-emitter@1.1.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"shasum":"800089150fffcb8da9c6e7ca1373529196cb1953","size":2214,"noattachment":false,"key":"/typed-emitter/-/typed-emitter-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/typed-emitter/download/typed-emitter-1.1.0.tgz"},"maintainers":[{"name":"andywer","email":""}],"_npmUser":{"name":"andywer","email":"andy.dev@next-step-software.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typed-emitter_1.1.0_1590335084492_0.3337408622183753"},"_hasShrinkwrap":false,"publish_time":1590335084664,"_cnpm_publish_time":1590335084664,"_cnpmcore_publish_time":"2021-12-16T15:20:47.926Z"},"1.0.0":{"name":"typed-emitter","version":"1.0.0","license":"MIT","description":"Strictly typed event emitter interface for TypeScript 3.","author":{"name":"Andy Wermke","url":"https://github.com/andywer"},"repository":{"type":"git","url":"git+https://github.com/andywer/typed-emitter.git"},"keywords":["event","emitter","typescript","interface"],"gitHead":"2942782ce940518e2e0841ac117ef178268ef493","bugs":{"url":"https://github.com/andywer/typed-emitter/issues"},"homepage":"https://github.com/andywer/typed-emitter#readme","_id":"typed-emitter@1.0.0","_nodeVersion":"10.16.3","_npmVersion":"6.14.2","dist":{"shasum":"e21a0151539fc6f61e1f59b0d3655f6879b59eb5","size":2206,"noattachment":false,"key":"/typed-emitter/-/typed-emitter-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/typed-emitter/download/typed-emitter-1.0.0.tgz"},"maintainers":[{"name":"andywer","email":""}],"_npmUser":{"name":"andywer","email":"andy.dev@next-step-software.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typed-emitter_1.0.0_1585500981308_0.3917390857291161"},"_hasShrinkwrap":false,"publish_time":1585500981470,"_cnpm_publish_time":1585500981470,"_cnpmcore_publish_time":"2021-12-16T15:20:48.149Z"},"0.2.0":{"name":"typed-emitter","version":"0.2.0","license":"MIT","description":"Strictly typed event emitter interface for TypeScript 3.","author":{"name":"Andy Wermke","url":"https://github.com/andywer"},"repository":{"type":"git","url":"git+https://github.com/andywer/typed-emitter.git"},"keywords":["event","emitter","typescript","interface"],"gitHead":"1f9fda93c760c36b7f40a2658d184e5ee307170f","bugs":{"url":"https://github.com/andywer/typed-emitter/issues"},"homepage":"https://github.com/andywer/typed-emitter#readme","_id":"typed-emitter@0.2.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"shasum":"ede9a20a3aa78cb853c2866ddad968a3925830e1","size":2214,"noattachment":false,"key":"/typed-emitter/-/typed-emitter-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/typed-emitter/download/typed-emitter-0.2.0.tgz"},"maintainers":[{"name":"andywer","email":""}],"_npmUser":{"name":"andywer","email":"andy.dev@next-step-software.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typed-emitter_0.2.0_1571686379613_0.2601200771621084"},"_hasShrinkwrap":false,"publish_time":1571686379749,"_cnpm_publish_time":1571686379749,"_cnpmcore_publish_time":"2021-12-16T15:20:48.390Z"},"0.1.0":{"name":"typed-emitter","version":"0.1.0","license":"MIT","description":"Strictly typed event emitter interface for TypeScript 3.","author":{"name":"Andy Wermke","url":"https://github.com/andywer"},"repository":{"type":"git","url":"git+https://github.com/andywer/typed-emitter.git"},"keywords":["event","emitter","typescript","interface"],"peerDepedencies":{"typescript":">= 3.0"},"gitHead":"33b993b95cce499bc0f2d5c6328ab22303dc03e6","bugs":{"url":"https://github.com/andywer/typed-emitter/issues"},"homepage":"https://github.com/andywer/typed-emitter#readme","_id":"typed-emitter@0.1.0","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"andywer","email":"andy.dev@next-step-software.com"},"dist":{"shasum":"ca532f100ccbf850e3a73b8ebf43d43e4f1f3849","size":2180,"noattachment":false,"key":"/typed-emitter/-/typed-emitter-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/typed-emitter/download/typed-emitter-0.1.0.tgz"},"maintainers":[{"name":"andywer","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typed-emitter_0.1.0_1538071899333_0.9815151863316631"},"_hasShrinkwrap":false,"publish_time":1538071899431,"_cnpm_publish_time":1538071899431,"_cnpmcore_publish_time":"2021-12-16T15:20:48.606Z"},"0.0.2":{"name":"typed-emitter","version":"0.0.2","description":"Basic pub/sub/emitter class for React apps, inspired by Flux","main":"emitter.js","scripts":{"test":"node test.js && eslint *.js && echo 'Tests passed, eslint passed'"},"repository":{"type":"git","url":"git+https://github.com/wyantb/typed-emitter.git"},"keywords":["emitter","events"],"author":{"name":"Brian Wyant"},"license":"MIT","bugs":{"url":"https://github.com/wyantb/typed-emitter/issues"},"homepage":"https://github.com/wyantb/typed-emitter#readme","dependencies":{"lodash":"^4.11.1"},"devDependencies":{"eslint":"^2.8.0","eslint-config-airbnb":"^8.0.0","eslint-plugin-import":"^1.5.0"},"gitHead":"f49fe04c6fdca10aa8bb8c1be9b8a28e1711e92c","_id":"typed-emitter@0.0.2","_shasum":"d9652569941f5242de2e9f995e45a7a00246592e","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"wyantb","email":"wyantb@gmail.com"},"maintainers":[{"name":"andywer","email":""}],"dist":{"shasum":"d9652569941f5242de2e9f995e45a7a00246592e","size":2177,"noattachment":false,"key":"/typed-emitter/-/typed-emitter-0.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/typed-emitter/download/typed-emitter-0.0.2.tgz"},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/typed-emitter-0.0.2.tgz_1461416020109_0.23727099038660526"},"directories":{},"publish_time":1461416021849,"_hasShrinkwrap":false,"_cnpm_publish_time":1461416021849,"_cnpmcore_publish_time":"2021-12-16T15:20:48.845Z"},"0.0.1":{"name":"typed-emitter","version":"0.0.1","description":"Basic pub/sub/emitter class for React apps, inspired by Flux","main":"emitter.js","scripts":{"test":"node test.js && eslint *.js && echo 'Tests passed, eslint passed'"},"repository":{"type":"git","url":"git+https://github.com/wyantb/typed-emitter.git"},"keywords":["emitter","events"],"author":{"name":"Brian Wyant"},"license":"MIT","bugs":{"url":"https://github.com/wyantb/typed-emitter/issues"},"homepage":"https://github.com/wyantb/typed-emitter#readme","dependencies":{"lodash":"^4.11.1"},"devDependencies":{"eslint":"^2.8.0","eslint-config-airbnb":"^8.0.0","eslint-plugin-import":"^1.5.0"},"gitHead":"5917d86bce95622ecfcdb582fce16c76c068ac38","_id":"typed-emitter@0.0.1","_shasum":"9ab64ece9d878014b65d4a75e25b5f5ad669016f","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"wyantb","email":"wyantb@gmail.com"},"maintainers":[{"name":"andywer","email":""}],"dist":{"shasum":"9ab64ece9d878014b65d4a75e25b5f5ad669016f","size":1919,"noattachment":false,"key":"/typed-emitter/-/typed-emitter-0.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/typed-emitter/download/typed-emitter-0.0.1.tgz"},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/typed-emitter-0.0.1.tgz_1461371857941_0.16576259746216238"},"directories":{},"publish_time":1461371860379,"_hasShrinkwrap":false,"_cnpm_publish_time":1461371860379,"_cnpmcore_publish_time":"2021-12-16T15:20:49.037Z"}},"readme":"# Typed-Emitter\n\n[![NPM Version](https://img.shields.io/npm/v/typed-emitter.svg)](https://www.npmjs.com/package/typed-emitter)\n\nStrictly typed event emitter interface for TypeScript.\n\nCode size: Zero bytes - Just the typings, no implementation. Use the default event emitter of the `events` module in node.js or bring your favorite implementation when writing code for the browser.\n\n\n## Installation\n\n```sh\n$ npm install --save-dev typed-emitter\n\n# Using yarn:\n$ yarn add --dev typed-emitter\n```\n\n\n## Usage\n\n```ts\nimport EventEmitter from \"events\"\nimport TypedEmitter from \"typed-emitter\"\n\n// Define your emitter's types like that:\n// Key: Event name; Value: Listener function signature\ninterface MessageEvents {\n  error: (error: Error) => void,\n  message: (body: string, from: string) => void\n}\n\nconst messageEmitter = new EventEmitter() as TypedEmitter<MessageEvents>\n\n// Good ????\nmessageEmitter.emit(\"message\", \"Hi there!\", \"no-reply@test.com\")\n\n// TypeScript will catch those mistakes ✋\nmessageEmitter.emit(\"mail\", \"Hi there!\", \"no-reply@test.com\")\nmessageEmitter.emit(\"message\", \"Hi there!\", true)\n\n// Good ????\nmessageEmitter.on(\"error\", (error: Error) => { /* ... */ })\n\n// TypeScript will catch those mistakes ✋\nmessageEmitter.on(\"error\", (error: string) => { /* ... */ })\nmessageEmitter.on(\"failure\", (error: Error) => { /* ... */ })\n```\n\n## Extending an emitter\n\nYou might find yourself in a situation where you need to extend an event emitter, but also want to strictly type its events. Here is how to.\n\n```ts\nclass MyEventEmitter extends (EventEmitter as new () => TypedEmitter<MyEvents>) {\n  // ...\n}\n```\n\nAs a generic class:\n\n```ts\nclass MyEventEmitter<T> extends (EventEmitter as { new<T>(): TypedEmitter<T> })<T> {\n  // ...\n}\n```\n\n## RxJS `fromEvent` types inference\n\nThe default `fromEvent` from RxJS will return an `Observable<unknown>` for our typed emitter.\n\nThis can be fixed by the following code, by replacing the `fromEvent` type with our enhanced one: `FromEvent`:\n\n```ts\nimport { fromEvent as rxFromEvent } from \"rxjs\"\nimport { FromEvent } from \"typed-emitter/rxjs\"\n\n// The `Observable` typing can be correctly inferenced\nconst fromEvent = rxFromEvent as FromEvent\n```\n\nLearn more from [rxjs fromEvent compatibility #9](https://github.com/andywer/typed-emitter/issues/9)\nfor the `fromEvent` compatibility discussions.\n\n## Why another package?\n\nThe interface that comes with `@types/node` is not type-safe at all. It does not even offer a way of specifying the events that the emitter will emit...\n\nThe `eventemitter3` package is a popular event emitter implementation that comes with TypeScript types out of the box. Unfortunately there is no way to declare the event arguments that the listeners have to expect.\n\nThere were a few other examples of type-safe event emitter interfaces out there as well. They were either not published to npm, had an inconsistent interface or other limitations.\n\n## License\n\nMIT\n","_attachments":{},"homepage":"https://github.com/andywer/typed-emitter#readme","bugs":{"url":"https://github.com/andywer/typed-emitter/issues"},"license":"MIT"}