From d63b350e6de3360d05ed6360cfaf101017237a73 Mon Sep 17 00:00:00 2001 From: Severin Date: Sat, 25 Feb 2017 22:24:28 +0100 Subject: Typescript definitions (#25) * Added type definitions * Handler only has exactly one or no argument * Moved type defs to root folder --- README.md | 8 ++++++++ mitt.d.ts | 46 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 4 +++- typings.json | 5 +++++ 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 mitt.d.ts create mode 100644 typings.json diff --git a/README.md b/README.md index 7eb97f5..1a687ba 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,12 @@ emitter.on('foo', onFoo) // listen emitter.off('foo', onFoo) // unlisten ``` +### Typescript +```ts +import * as mitt from 'mitt'; +let emitter: mitt.Emitter = new mitt(); +``` + ## Examples & Demos @@ -79,6 +85,8 @@ emitter.off('foo', onFoo) // unlisten preact + mitt preview +* * * + ## API ### mitt diff --git a/mitt.d.ts b/mitt.d.ts new file mode 100644 index 0000000..41ea221 --- /dev/null +++ b/mitt.d.ts @@ -0,0 +1,46 @@ +declare var mitt: mitt.MittStatic; + +declare module "mitt" { + export = mitt; +} + +declare namespace mitt { + type Handler = (event?: any) => void; + + interface MittStatic { + new(all?: {[key: string]: Handler}): Emitter; + } + + interface Emitter { + /** + * Register an event handler for the given type. + * + * @param {string} type Type of event to listen for, or `"*"` for all events. + * @param {Handler} handler Function to call in response to the given event. + * + * @memberOf Mitt + */ + on(type: string, handler: Handler): void; + + /** + * Function to call in response to the given event + * + * @param {string} type Type of event to unregister `handler` from, or `"*"` + * @param {Handler} handler Handler function to remove. + * + * @memberOf Mitt + */ + off(type: string, handler: Handler): void; + + /** + * Invoke all handlers for the given type. + * If present, `"*"` handlers are invoked prior to type-matched handlers. + * + * @param {string} type The event type to invoke + * @param {any} [event] An event object, passed to each handler + * + * @memberOf Mitt + */ + emit(type: string, event?: any): void; + } +} diff --git a/package.json b/package.json index bf13c22..5f84071 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,8 @@ "license": "MIT", "files": [ "src", - "dist" + "dist", + "mitt.d.ts" ], "eslintConfig": { "parser": "babel-eslint", @@ -48,6 +49,7 @@ "semi": [2, "always"] } }, + "typings": "./mitt.d.ts", "devDependencies": { "babel-core": "^6.9.1", "babel-eslint": "^7.1.1", diff --git a/typings.json b/typings.json new file mode 100644 index 0000000..ad8ab5f --- /dev/null +++ b/typings.json @@ -0,0 +1,5 @@ +{ + "name": "mitt", + "main": "mitt.d.ts", + "version": false +} \ No newline at end of file -- cgit v1.2.3