From 6a4b60bef8f62e69d22772a35e3d4dfd33f15a04 Mon Sep 17 00:00:00 2001 From: Dave Brudner <32269552+dbrudner@users.noreply.github.com> Date: Fri, 20 Mar 2020 10:55:48 -0500 Subject: [PATCH] Component emitter event (#43125) * component-emitter: adding Event generic * component-emitter: adding tests for Event generic --- .../component-emitter-tests.ts | 27 +++++++++++++++++++ types/component-emitter/index.d.ts | 14 +++++----- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/types/component-emitter/component-emitter-tests.ts b/types/component-emitter/component-emitter-tests.ts index 3d2ed7252a..fc4faefef1 100644 --- a/types/component-emitter/component-emitter-tests.ts +++ b/types/component-emitter/component-emitter-tests.ts @@ -50,3 +50,30 @@ emitter.listeners('some-recurring-event') emitter.hasListeners('some-recurring-event') emitter.emit('some-event').emit("I can use chaining!") + +let recurlyEmitter: Emitter<'change' | 'field:submit'> = new Emitter(); + +recurlyEmitter.on('change', handleSomeRecurringEvent); +// $ExpectError +recurlyEmitter.on('some-recurring-event', handleSomeRecurringEvent); + +recurlyEmitter.once('field:submit', (event_data: any) => {console.log('handle some-single-shot-event')}) +// $ExpectError +recurlyEmitter.once('some-single-shot-event', (event_data: any) => {console.log('handle some-single-shot-event')}) + +recurlyEmitter.off() +recurlyEmitter.off('change') +// $ExpectError +recurlyEmitter.off('some-recurring-event') + +recurlyEmitter.emit('field:submit', event_data) +// $ExpectError +recurlyEmitter.emit('some-recurring-event', event_data) + +recurlyEmitter.listeners('change') +// $ExpectError +recurlyEmitter.listeners('some-recurring-event') + +recurlyEmitter.hasListeners("field:submit"); +// $ExpectError +recurlyEmitter.hasListeners('some-recurring-event') diff --git a/types/component-emitter/index.d.ts b/types/component-emitter/index.d.ts index 16332270e1..0b089914f2 100644 --- a/types/component-emitter/index.d.ts +++ b/types/component-emitter/index.d.ts @@ -5,13 +5,13 @@ // TypeScript Version: 2.2 -interface Emitter { - on(event: string, listener: Function): Emitter; - once(event: string, listener: Function): Emitter; - off(event?: string, listener?: Function): Emitter; - emit(event: string, ...args: any[]): Emitter; - listeners(event: string): Function[]; - hasListeners(event: string): boolean; +interface Emitter { + on(event: Event, listener: Function): Emitter; + once(event: Event, listener: Function): Emitter; + off(event?: Event, listener?: Function): Emitter; + emit(event: Event, ...args: any[]): Emitter; + listeners(event: Event): Function[]; + hasListeners(event: Event): boolean; } declare const Emitter: {