From 052b473238fe4aec4a29daf447acd0a2f77fc980 Mon Sep 17 00:00:00 2001 From: Alexander Sychev Date: Mon, 31 Dec 2018 19:46:27 +0300 Subject: [PATCH] Types for "micro-events" package (#31718) * Types for "micro-events" package * Fix version of TS by travis error --- types/micro-events/index.d.ts | 22 ++++++++++++++++++++++ types/micro-events/micro-events-tests.ts | 13 +++++++++++++ types/micro-events/tsconfig.json | 24 ++++++++++++++++++++++++ types/micro-events/tslint.json | 3 +++ 4 files changed, 62 insertions(+) create mode 100644 types/micro-events/index.d.ts create mode 100644 types/micro-events/micro-events-tests.ts create mode 100644 types/micro-events/tsconfig.json create mode 100644 types/micro-events/tslint.json diff --git a/types/micro-events/index.d.ts b/types/micro-events/index.d.ts new file mode 100644 index 0000000000..a9c046cb6f --- /dev/null +++ b/types/micro-events/index.d.ts @@ -0,0 +1,22 @@ +// Type definitions for micro-events 1.0 +// Project: https://github.com/alexanderGugel/micro-events +// Definitions by: Alexander Sychev +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.4 + +/** Event emitter class */ +declare class MicroEventEmitter { + /** Max listeners count */ + maxListeners: number; + /** Attach listener */ + on(type: string, handler: MicroEventEmitter.EventHandler): MicroEventEmitter; + /** Detach listener */ + off(type: string, handler?: MicroEventEmitter.EventHandler): MicroEventEmitter; + /** Trigger event */ + emit(type: string, ...arguments: any[]): MicroEventEmitter; +} +declare namespace MicroEventEmitter { + /** Event handler function signature */ + type EventHandler = (...args: any[]) => any; +} +export = MicroEventEmitter; diff --git a/types/micro-events/micro-events-tests.ts b/types/micro-events/micro-events-tests.ts new file mode 100644 index 0000000000..3d8ac6f4d0 --- /dev/null +++ b/types/micro-events/micro-events-tests.ts @@ -0,0 +1,13 @@ +import * as EventEmitter from "micro-events"; + +const myEventEmitter = new EventEmitter(); + +myEventEmitter.maxListeners; // $ExpectType number + +const listener = (first: string) => {}; + +myEventEmitter.on('foo', listener); // $ExpectType MicroEventEmitter + +myEventEmitter.emit('foo', 'bar'); // $ExpectType MicroEventEmitter + +myEventEmitter.off('foo', listener); // $ExpectType MicroEventEmitter diff --git a/types/micro-events/tsconfig.json b/types/micro-events/tsconfig.json new file mode 100644 index 0000000000..a42efbcba0 --- /dev/null +++ b/types/micro-events/tsconfig.json @@ -0,0 +1,24 @@ + +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "micro-events-tests.ts" + ] +} diff --git a/types/micro-events/tslint.json b/types/micro-events/tslint.json new file mode 100644 index 0000000000..e60c15844f --- /dev/null +++ b/types/micro-events/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "dtslint/dt.json" +} \ No newline at end of file