From b4187f1f44e1a51ba603870a1762fec861824508 Mon Sep 17 00:00:00 2001 From: yasupeke Date: Mon, 27 Nov 2017 17:56:01 +0900 Subject: [PATCH 1/3] =?UTF-8?q?Add=20=E2=80=98events=E2=80=99=20types=20(#?= =?UTF-8?q?21019)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- types/events/events-tests.ts | 53 ++++++++++++++++++++++++++++++++++++ types/events/index.d.ts | 22 +++++++++++++++ types/events/tsconfig.json | 25 +++++++++++++++++ types/events/tslint.json | 1 + 4 files changed, 101 insertions(+) create mode 100644 types/events/events-tests.ts create mode 100644 types/events/index.d.ts create mode 100644 types/events/tsconfig.json create mode 100644 types/events/tslint.json diff --git a/types/events/events-tests.ts b/types/events/events-tests.ts new file mode 100644 index 0000000000..fe62a6e1a3 --- /dev/null +++ b/types/events/events-tests.ts @@ -0,0 +1,53 @@ +import { EventEmitter } from 'events'; + +const emitter = new EventEmitter(); +const listener = () => { + console.log('once'); +}; +const listener1 = () => { + console.log('listener1'); +}; +const listener2 = () => { + console.log('listener2'); +}; +const listener3 = (arg1: string, arg2: string, arg3: number) => { + console.log('listener3'); +}; + +emitter.setMaxListeners(100); + +emitter.addListener('send', listener1); + +emitter.on('send', listener2); + +emitter.on('send', listener3); + +emitter.once('send', listener); + +emitter.listeners('send'); +emitter.listenerCount('send'); + +EventEmitter.defaultMaxListeners = 100; +console.log(`count(static): ${EventEmitter.listenerCount(emitter, 'send')}`); + +setTimeout(() => { + console.log(`\ncount: ${emitter.listenerCount('send')}`); + emitter.emit('send'); +}, 1000); + +setTimeout(() => { + console.log(`\ncount: ${emitter.listenerCount('send')}`); + emitter.emit('send'); + emitter.removeListener('send', listener2); +}, 2000); + +setTimeout(() => { + console.log(`\ncount: ${emitter.listenerCount('send')}`); + emitter.emit('send'); + emitter.removeAllListeners('send'); +}, 3000); + +setTimeout(() => { + console.log(`\ncount: ${emitter.listenerCount('send')}`); + emitter.emit('send'); +}, 3000); diff --git a/types/events/index.d.ts b/types/events/index.d.ts new file mode 100644 index 0000000000..6907d6f07e --- /dev/null +++ b/types/events/index.d.ts @@ -0,0 +1,22 @@ +// Type definitions for events 1.1 +// Project: https://github.com/Gozala/events +// Definitions by: Yasunori Ohoka +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.4 + +export type Listener = (...args: any[]) => void; + +export class EventEmitter { + static listenerCount(emitter: EventEmitter, type: string): number; + static defaultMaxListeners: number; + + setMaxListeners(n: number): this; + emit(type: string, ...args: any[]): boolean; + addListener(type: string, listener: Listener): this; + on(type: string, listener: Listener): this; + once(type: string, listener: Listener): this; + removeListener(type: string, listener: Listener): this; + removeAllListeners(type: string): this; + listeners(type: string): Listener[]; + listenerCount(type: string): number; +} diff --git a/types/events/tsconfig.json b/types/events/tsconfig.json new file mode 100644 index 0000000000..f43a926ad8 --- /dev/null +++ b/types/events/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "lib": [ + "es6", + "dom" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "events-tests.ts" + ] +} diff --git a/types/events/tslint.json b/types/events/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/events/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } From 49c1c1c69ada73decb5a9fe0cb6f40e1779e9e25 Mon Sep 17 00:00:00 2001 From: yasupeke Date: Mon, 27 Nov 2017 18:17:39 +0900 Subject: [PATCH 2/3] [events]Fix parameter type --- types/events/events-tests.ts | 21 ++++++++++++++------- types/events/index.d.ts | 18 +++++++++--------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/types/events/events-tests.ts b/types/events/events-tests.ts index fe62a6e1a3..ccf89c1402 100644 --- a/types/events/events-tests.ts +++ b/types/events/events-tests.ts @@ -10,8 +10,11 @@ const listener1 = () => { const listener2 = () => { console.log('listener2'); }; -const listener3 = (arg1: string, arg2: string, arg3: number) => { - console.log('listener3'); +const listener3 = (arg1: string) => { + console.log('listener3', arg1); +}; +const listener4 = () => { + console.log('type of number'); }; emitter.setMaxListeners(100); @@ -24,30 +27,34 @@ emitter.on('send', listener3); emitter.once('send', listener); +emitter.once(1, listener4); + emitter.listeners('send'); emitter.listenerCount('send'); EventEmitter.defaultMaxListeners = 100; console.log(`count(static): ${EventEmitter.listenerCount(emitter, 'send')}`); +console.log(`ncount: ${emitter.listenerCount('send')}`); setTimeout(() => { - console.log(`\ncount: ${emitter.listenerCount('send')}`); + console.log('\n'); emitter.emit('send'); }, 1000); setTimeout(() => { - console.log(`\ncount: ${emitter.listenerCount('send')}`); + console.log('\n'); emitter.emit('send'); emitter.removeListener('send', listener2); }, 2000); setTimeout(() => { - console.log(`\ncount: ${emitter.listenerCount('send')}`); - emitter.emit('send'); + console.log('\n'); + emitter.emit('send', 'params1'); emitter.removeAllListeners('send'); }, 3000); setTimeout(() => { - console.log(`\ncount: ${emitter.listenerCount('send')}`); + console.log('\n'); + emitter.emit(1); emitter.emit('send'); }, 3000); diff --git a/types/events/index.d.ts b/types/events/index.d.ts index 6907d6f07e..6214b5cf12 100644 --- a/types/events/index.d.ts +++ b/types/events/index.d.ts @@ -7,16 +7,16 @@ export type Listener = (...args: any[]) => void; export class EventEmitter { - static listenerCount(emitter: EventEmitter, type: string): number; + static listenerCount(emitter: EventEmitter, type: string | number): number; static defaultMaxListeners: number; setMaxListeners(n: number): this; - emit(type: string, ...args: any[]): boolean; - addListener(type: string, listener: Listener): this; - on(type: string, listener: Listener): this; - once(type: string, listener: Listener): this; - removeListener(type: string, listener: Listener): this; - removeAllListeners(type: string): this; - listeners(type: string): Listener[]; - listenerCount(type: string): number; + emit(type: string | number, ...args: any[]): boolean; + addListener(type: string | number, listener: Listener): this; + on(type: string | number, listener: Listener): this; + once(type: string | number, listener: Listener): this; + removeListener(type: string | number, listener: Listener): this; + removeAllListeners(type: string | number): this; + listeners(type: string | number): Listener[]; + listenerCount(type: string | number): number; } From 63c2ba94b2adb6ec908281f839f128c8229f65e8 Mon Sep 17 00:00:00 2001 From: yasupeke Date: Mon, 27 Nov 2017 19:06:02 +0900 Subject: [PATCH 3/3] [events]Deleted TypeScript Version --- types/events/index.d.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/types/events/index.d.ts b/types/events/index.d.ts index 6214b5cf12..85ce0a7b0e 100644 --- a/types/events/index.d.ts +++ b/types/events/index.d.ts @@ -2,7 +2,6 @@ // Project: https://github.com/Gozala/events // Definitions by: Yasunori Ohoka // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.4 export type Listener = (...args: any[]) => void;