Html element onerror override #2161
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes this Typescript issue.
Originally, I created this PR, but closed it as the that approach wasn't ideal.
I started with
Omit<GlobalEventHandlers, 'onerror'>as an approach. However, I quickly realized it isn't the correct path and creates a whole slew of new problems due to how event handlers are mapped to different elements during the emit phase. (if you're curious to see what exactly I ran into, I can push up a separate PR).What this change does:
Introduces a new type
DocumentOrGlobalOnErrorHandlerwhich extends theOnErrorEventHandlerNonNulltype withHTMLElementspecific handlers. This type then overridesGlobalEventHandlersonerrorproperty. This allow us to be backwards compatible and fix the bug.This did require a change to both
types.tsandemitter.tsso thatexposedwas accounted for when creating a new typedef. I needed the newDocumentOrGlobalOnErrorHandlerto only be exposed on the dom library.the
onerrorofGlobalEventHandlerscannot be overridden by theoverrideType.tsfile. I tried to a few times, in bothmixin-insandinterfaces. It turns out it has to be overidden in thepatches/events.kdlfile.Let me know if I missed anything or another approach would be better. I think this threads the needle nicely as it works only on
domelements and still provides both the global andHTMLElementspecificonerrorhandling types.