diff --git a/packages/react-native/Libraries/vendor/emitter/EventEmitter.js b/packages/react-native/Libraries/vendor/emitter/EventEmitter.js index 2a9c9aab0b2373..904b77a3226756 100644 --- a/packages/react-native/Libraries/vendor/emitter/EventEmitter.js +++ b/packages/react-native/Libraries/vendor/emitter/EventEmitter.js @@ -35,9 +35,10 @@ interface Registration { +remove: () => void; } -type Registry = { - [key in keyof TEventToArgsMap]?: Set>, -}; +type Registry = $ObjMap< + TEventToArgsMap, + (TArgs) => Set>, +>; /** * EventEmitter manages listeners and publishes events to them. @@ -62,7 +63,7 @@ type Registry = { export default class EventEmitter implements IEventEmitter { - _registry: Registry = emptyRegistry(); + _registry: Registry = {}; /** * Registers a listener that is called when the supplied event is emitted. @@ -121,7 +122,7 @@ export default class EventEmitter eventType?: ?TEvent, ): void { if (eventType == null) { - this._registry = emptyRegistry(); + this._registry = {}; } else { delete this._registry[eventType]; } @@ -136,13 +137,6 @@ export default class EventEmitter } } -function emptyRegistry(): Registry { - // Flow cannot enforce that `TEventToArgsMap` is an object because, for - // example, Flow permits `empty. We have to ignore this error for now. - // $FlowIgnore[incompatible-return] - return {}; -} - function allocate< TEventToArgsMap: {...}, TEvent: $Keys,