From 6d1d0be03746e844310e042e1b455e003e12f79e Mon Sep 17 00:00:00 2001 From: Tim Yung Date: Fri, 7 Jul 2023 12:04:33 -0700 Subject: [PATCH] RN: Adopt Indexed Access Types in EventEmitter Summary: Adopts [Indexed Access Types](https://flow.org/en/docs/types/indexed-access/) in `EventEmitter`. Changelog: [Internal] Reviewed By: gkz, SamChou19815 Differential Revision: D47298095 fbshipit-source-id: f18641896ce759d41b248abc48d7813048ad3117 --- .../Libraries/vendor/emitter/EventEmitter.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/react-native/Libraries/vendor/emitter/EventEmitter.js b/packages/react-native/Libraries/vendor/emitter/EventEmitter.js index 6bd20257222d73..00a22f1361e6f2 100644 --- a/packages/react-native/Libraries/vendor/emitter/EventEmitter.js +++ b/packages/react-native/Libraries/vendor/emitter/EventEmitter.js @@ -15,13 +15,13 @@ export interface EventSubscription { export interface IEventEmitter { addListener>( eventType: TEvent, - listener: (...args: $ElementType) => mixed, + listener: (...args: TEventToArgsMap[TEvent]) => mixed, context?: mixed, ): EventSubscription; emit>( eventType: TEvent, - ...args: $ElementType + ...args: TEventToArgsMap[TEvent] ): void; removeAllListeners>(eventType?: ?TEvent): void; @@ -71,7 +71,7 @@ export default class EventEmitter */ addListener>( eventType: TEvent, - listener: (...args: $ElementType) => mixed, + listener: (...args: TEventToArgsMap[TEvent]) => mixed, context: mixed, ): EventSubscription { if (typeof listener !== 'function') { @@ -79,11 +79,11 @@ export default class EventEmitter 'EventEmitter.addListener(...): 2nd argument must be a function.', ); } - const registrations = allocate<_, _, TEventToArgsMap[TEvent]>( + const registrations = allocate( this._registry, eventType, ); - const registration: Registration<$ElementType> = { + const registration: Registration = { context, listener, remove(): void { @@ -103,10 +103,10 @@ export default class EventEmitter */ emit>( eventType: TEvent, - ...args: $ElementType + ...args: TEventToArgsMap[TEvent] ): void { const registrations: ?Set< - Registration<$ElementType>, + Registration, > = this._registry[eventType]; if (registrations != null) { for (const registration of [...registrations]) { @@ -140,7 +140,7 @@ export default class EventEmitter function allocate< TEventToArgsMap: {...}, TEvent: $Keys, - TEventArgs: $ElementType, + TEventArgs: TEventToArgsMap[TEvent], >( registry: Registry, eventType: TEvent,