Component emitter event (#43125)

* component-emitter: adding Event generic

* component-emitter: adding tests for Event generic
This commit is contained in:
Dave Brudner 2020-03-20 10:55:48 -05:00 committed by GitHub
parent 490cf94683
commit 6a4b60bef8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 7 deletions

View File

@ -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')

View File

@ -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<Event = string> {
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: {