diff --git a/baselines/dom.generated.d.ts b/baselines/dom.generated.d.ts index c96bb81bd..e6a509683 100644 --- a/baselines/dom.generated.d.ts +++ b/baselines/dom.generated.d.ts @@ -15071,7 +15071,7 @@ interface GlobalEventHandlers { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/ended_event) */ onended: ((this: GlobalEventHandlers, ev: Event) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/error_event) */ - onerror: OnErrorEventHandler; + onerror: DocumentOrGlobalOnErrorEventHandler; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/focus_event) */ onfocus: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLFormElement/formdata_event) */ @@ -29370,6 +29370,12 @@ interface SVGElement extends Element, ElementCSSInlineStyle, GlobalEventHandlers * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SVGElement/viewportElement) */ readonly viewportElement: SVGElement | null; + /** + * The addEventListener() method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target. + * + * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener) + */ + addEventListener(type: string, listener: ((event: Event) => void) | ((event: UIEvent) => void)): void; addEventListener(type: K, listener: (this: SVGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -31734,6 +31740,12 @@ interface SVGSVGElement extends SVGGraphicsElement, SVGFitToViewBox, WindowEvent unsuspendRedraw(suspendHandleID: number): void; /** @deprecated */ unsuspendRedrawAll(): void; + /** + * The addEventListener() method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target. + * + * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener) + */ + addEventListener(type: string, listener: ((event: Event) => void) | ((event: UIEvent) => void)): void; addEventListener(type: K, listener: (this: SVGSVGElement, ev: SVGSVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGSVGElement, ev: SVGSVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -41635,7 +41647,7 @@ declare var onemptied: ((this: Window, ev: Event) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/ended_event) */ declare var onended: ((this: Window, ev: Event) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/error_event) */ -declare var onerror: OnErrorEventHandler; +declare var onerror: DocumentOrGlobalOnErrorEventHandler; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/focus_event) */ declare var onfocus: ((this: Window, ev: FocusEvent) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLFormElement/formdata_event) */ @@ -41912,6 +41924,7 @@ type ConstrainDouble = number | ConstrainDoubleRange; type ConstrainULong = number | ConstrainULongRange; type CookieList = CookieListItem[]; type DOMHighResTimeStamp = number; +type DocumentOrGlobalOnErrorEventHandler = (((event: Event) => any) | ((event: UIEvent) => any) | OnErrorEventHandlerNonNull) | null; type EpochTimeStamp = number; type EventListenerOrEventListenerObject = EventListener | EventListenerObject; type FileSystemWriteChunkType = BufferSource | Blob | string | WriteParams; diff --git a/baselines/ts5.5/dom.generated.d.ts b/baselines/ts5.5/dom.generated.d.ts index fc1d93ece..e895fc499 100644 --- a/baselines/ts5.5/dom.generated.d.ts +++ b/baselines/ts5.5/dom.generated.d.ts @@ -15057,7 +15057,7 @@ interface GlobalEventHandlers { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/ended_event) */ onended: ((this: GlobalEventHandlers, ev: Event) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/error_event) */ - onerror: OnErrorEventHandler; + onerror: DocumentOrGlobalOnErrorEventHandler; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/focus_event) */ onfocus: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLFormElement/formdata_event) */ @@ -29345,6 +29345,12 @@ interface SVGElement extends Element, ElementCSSInlineStyle, GlobalEventHandlers * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SVGElement/viewportElement) */ readonly viewportElement: SVGElement | null; + /** + * The addEventListener() method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target. + * + * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener) + */ + addEventListener(type: string, listener: ((event: Event) => void) | ((event: UIEvent) => void)): void; addEventListener(type: K, listener: (this: SVGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -31709,6 +31715,12 @@ interface SVGSVGElement extends SVGGraphicsElement, SVGFitToViewBox, WindowEvent unsuspendRedraw(suspendHandleID: number): void; /** @deprecated */ unsuspendRedrawAll(): void; + /** + * The addEventListener() method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target. + * + * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener) + */ + addEventListener(type: string, listener: ((event: Event) => void) | ((event: UIEvent) => void)): void; addEventListener(type: K, listener: (this: SVGSVGElement, ev: SVGSVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGSVGElement, ev: SVGSVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -41609,7 +41621,7 @@ declare var onemptied: ((this: Window, ev: Event) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/ended_event) */ declare var onended: ((this: Window, ev: Event) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/error_event) */ -declare var onerror: OnErrorEventHandler; +declare var onerror: DocumentOrGlobalOnErrorEventHandler; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/focus_event) */ declare var onfocus: ((this: Window, ev: FocusEvent) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLFormElement/formdata_event) */ @@ -41886,6 +41898,7 @@ type ConstrainDouble = number | ConstrainDoubleRange; type ConstrainULong = number | ConstrainULongRange; type CookieList = CookieListItem[]; type DOMHighResTimeStamp = number; +type DocumentOrGlobalOnErrorEventHandler = (((event: Event) => any) | ((event: UIEvent) => any) | OnErrorEventHandlerNonNull) | null; type EpochTimeStamp = number; type EventListenerOrEventListenerObject = EventListener | EventListenerObject; type FileSystemWriteChunkType = BufferSource | Blob | string | WriteParams; diff --git a/baselines/ts5.6/dom.generated.d.ts b/baselines/ts5.6/dom.generated.d.ts index 743813310..cbc4b1d44 100644 --- a/baselines/ts5.6/dom.generated.d.ts +++ b/baselines/ts5.6/dom.generated.d.ts @@ -15068,7 +15068,7 @@ interface GlobalEventHandlers { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/ended_event) */ onended: ((this: GlobalEventHandlers, ev: Event) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/error_event) */ - onerror: OnErrorEventHandler; + onerror: DocumentOrGlobalOnErrorEventHandler; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/focus_event) */ onfocus: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLFormElement/formdata_event) */ @@ -29367,6 +29367,12 @@ interface SVGElement extends Element, ElementCSSInlineStyle, GlobalEventHandlers * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SVGElement/viewportElement) */ readonly viewportElement: SVGElement | null; + /** + * The addEventListener() method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target. + * + * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener) + */ + addEventListener(type: string, listener: ((event: Event) => void) | ((event: UIEvent) => void)): void; addEventListener(type: K, listener: (this: SVGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -31731,6 +31737,12 @@ interface SVGSVGElement extends SVGGraphicsElement, SVGFitToViewBox, WindowEvent unsuspendRedraw(suspendHandleID: number): void; /** @deprecated */ unsuspendRedrawAll(): void; + /** + * The addEventListener() method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target. + * + * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener) + */ + addEventListener(type: string, listener: ((event: Event) => void) | ((event: UIEvent) => void)): void; addEventListener(type: K, listener: (this: SVGSVGElement, ev: SVGSVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGSVGElement, ev: SVGSVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -41632,7 +41644,7 @@ declare var onemptied: ((this: Window, ev: Event) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/ended_event) */ declare var onended: ((this: Window, ev: Event) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/error_event) */ -declare var onerror: OnErrorEventHandler; +declare var onerror: DocumentOrGlobalOnErrorEventHandler; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/focus_event) */ declare var onfocus: ((this: Window, ev: FocusEvent) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLFormElement/formdata_event) */ @@ -41909,6 +41921,7 @@ type ConstrainDouble = number | ConstrainDoubleRange; type ConstrainULong = number | ConstrainULongRange; type CookieList = CookieListItem[]; type DOMHighResTimeStamp = number; +type DocumentOrGlobalOnErrorEventHandler = (((event: Event) => any) | ((event: UIEvent) => any) | OnErrorEventHandlerNonNull) | null; type EpochTimeStamp = number; type EventListenerOrEventListenerObject = EventListener | EventListenerObject; type FileSystemWriteChunkType = BufferSource | Blob | string | WriteParams; diff --git a/baselines/ts5.9/dom.generated.d.ts b/baselines/ts5.9/dom.generated.d.ts index ab262d313..e03fcefd9 100644 --- a/baselines/ts5.9/dom.generated.d.ts +++ b/baselines/ts5.9/dom.generated.d.ts @@ -15068,7 +15068,7 @@ interface GlobalEventHandlers { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/ended_event) */ onended: ((this: GlobalEventHandlers, ev: Event) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/error_event) */ - onerror: OnErrorEventHandler; + onerror: DocumentOrGlobalOnErrorEventHandler; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/focus_event) */ onfocus: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLFormElement/formdata_event) */ @@ -29367,6 +29367,12 @@ interface SVGElement extends Element, ElementCSSInlineStyle, GlobalEventHandlers * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SVGElement/viewportElement) */ readonly viewportElement: SVGElement | null; + /** + * The addEventListener() method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target. + * + * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener) + */ + addEventListener(type: string, listener: ((event: Event) => void) | ((event: UIEvent) => void)): void; addEventListener(type: K, listener: (this: SVGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -31731,6 +31737,12 @@ interface SVGSVGElement extends SVGGraphicsElement, SVGFitToViewBox, WindowEvent unsuspendRedraw(suspendHandleID: number): void; /** @deprecated */ unsuspendRedrawAll(): void; + /** + * The addEventListener() method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target. + * + * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener) + */ + addEventListener(type: string, listener: ((event: Event) => void) | ((event: UIEvent) => void)): void; addEventListener(type: K, listener: (this: SVGSVGElement, ev: SVGSVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGSVGElement, ev: SVGSVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -41632,7 +41644,7 @@ declare var onemptied: ((this: Window, ev: Event) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/ended_event) */ declare var onended: ((this: Window, ev: Event) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/error_event) */ -declare var onerror: OnErrorEventHandler; +declare var onerror: DocumentOrGlobalOnErrorEventHandler; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/focus_event) */ declare var onfocus: ((this: Window, ev: FocusEvent) => any) | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLFormElement/formdata_event) */ @@ -41909,6 +41921,7 @@ type ConstrainDouble = number | ConstrainDoubleRange; type ConstrainULong = number | ConstrainULongRange; type CookieList = CookieListItem[]; type DOMHighResTimeStamp = number; +type DocumentOrGlobalOnErrorEventHandler = (((event: Event) => any) | ((event: UIEvent) => any) | OnErrorEventHandlerNonNull) | null; type EpochTimeStamp = number; type EventListenerOrEventListenerObject = EventListener | EventListenerObject; type FileSystemWriteChunkType = BufferSource | Blob | string | WriteParams; diff --git a/inputfiles/addedTypes.jsonc b/inputfiles/addedTypes.jsonc index 0df5c62c0..d5bb88994 100644 --- a/inputfiles/addedTypes.jsonc +++ b/inputfiles/addedTypes.jsonc @@ -846,6 +846,12 @@ // Full spec at https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill. "name": "AutoFill", "overrideType": "AutoFillBase | `${OptionalPrefixToken}${OptionalPrefixToken}${AutoFillField}${OptionalPostfixToken}`" + }, + { + "name": "DocumentOrGlobalOnErrorEventHandler", + "nullable": true, + "overrideType": "((event: Event) => any) | ((event: UIEvent) => any) | OnErrorEventHandlerNonNull", + "exposed": "Window" } ] } diff --git a/inputfiles/knownTypes.json b/inputfiles/knownTypes.json index d0ba44099..0303dda42 100644 --- a/inputfiles/knownTypes.json +++ b/inputfiles/knownTypes.json @@ -21,6 +21,7 @@ "CompositeOperationOrAuto", "ComputedKeyframe", "DisplayCaptureSurfaceType", + "DocumentOrGlobalOnErrorEventHandler", "EcdhKeyDeriveParams", "EcdsaParams", "EcKeyAlgorithm", diff --git a/inputfiles/overridingTypes.jsonc b/inputfiles/overridingTypes.jsonc index 32683a28b..553bdea5f 100644 --- a/inputfiles/overridingTypes.jsonc +++ b/inputfiles/overridingTypes.jsonc @@ -1170,6 +1170,18 @@ "type": "any" } } + }, + "methods": { + "method": { + "addEventListener": { + "mdnUrl": "https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener", + "comment": "The addEventListener() method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target.", + "overrideSignatures": [ + "addEventListener(type: string, listener: ((event: Event) => void) | ((event: UIEvent) => void)): void" + ] + + } + } } }, "SVGSVGElement": { @@ -1188,6 +1200,14 @@ "overrideType": "NodeListOf" } } + }, + "addEventListener": { + "mdnUrl": "https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener", + "comment": "The addEventListener() method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target.", + "overrideSignatures": [ + "addEventListener(type: string, listener: ((event: Event) => void) | ((event: UIEvent) => void)): void" + ] + } } } diff --git a/inputfiles/patches/events.kdl b/inputfiles/patches/events.kdl index 504f6d0ed..292fd7094 100644 --- a/inputfiles/patches/events.kdl +++ b/inputfiles/patches/events.kdl @@ -74,7 +74,7 @@ interface-mixin GlobalEventHandlers { event transitionstart type=TransitionEvent event transitionend type=TransitionEvent event transitioncancel type=TransitionEvent - property onerror overrideType=OnErrorEventHandler + property onerror overrideType=DocumentOrGlobalOnErrorEventHandler } interface-mixin MessageEventTarget { diff --git a/src/build/expose.ts b/src/build/expose.ts index f2a6098bf..7e736484e 100644 --- a/src/build/expose.ts +++ b/src/build/expose.ts @@ -88,7 +88,9 @@ export function getExposedTypes( if (webidl.typedefs) { const referenced = webidl.typedefs.typedef.filter( - (t) => knownIDLTypes.has(t.name) || forceKnownTypesLogged.has(t.name), + (t) => + (knownIDLTypes.has(t.name) || forceKnownTypesLogged.has(t.name)) && + exposesTo(t, target), ); const { exposed, removed } = filterTypedefs(referenced, unexposedTypes); removed.forEach((s) => unexposedTypes.add(s)); diff --git a/src/build/types.ts b/src/build/types.ts index 69d5933db..0afefa610 100644 --- a/src/build/types.ts +++ b/src/build/types.ts @@ -233,6 +233,7 @@ export interface TypeDef extends Typed { deprecated?: boolean; legacyNamespace?: string; typeParameters?: TypeParameter[]; + exposed?: string; } export interface Dictionary { diff --git a/unittests/files/eventlistener.ts b/unittests/files/eventlistener.ts index 021afbc3c..32ebfa0cb 100644 --- a/unittests/files/eventlistener.ts +++ b/unittests/files/eventlistener.ts @@ -5,5 +5,91 @@ document.addEventListener("arbitrary_invalid_event", (ev) => { document.addEventListener("arbitrary_invalid_event", { handleEvent(ev) { return ev.returnValue; + }, +}); +const divElement: HTMLElement = document.createElement("div"); + +/** + * addEventListener works with a single event arg, Event + */ +divElement.addEventListener( + "click", + (event: Event) => { + if (event) { + return; + } + }, + false, +); + +/** + * HTMLElement addEventListener works with a single event arg, UIEvent + */ +divElement.addEventListener("click", (event: UIEvent) => { + if (event) { + return; + } +}); + +/** + * HTMLElement addEventListener works with a custom string and single event arg, Event + */ +divElement.addEventListener("beep", (event: Event) => { + if (event) { + return; + } +}); + +/** + * HTMLElement addEventListener works with a custom string and single event arg, UIEvent + */ +divElement.addEventListener("beep", (event: UIEvent) => { + if (event) { + return; + } +}); + +const svgElement = document.createElementNS( + "http://www.w3.org/2000/svg", + "svg", +); + +/** + * SVGElement addEventListener works with a single event arg, Event + */ +svgElement.addEventListener( + "click", + (event: Event) => { + if (event) { + return; + } + }, + false, +); + +/** + * SVGElement addEventListener works with a single event arg, UIEvent + */ +svgElement.addEventListener("click", (event: UIEvent) => { + if (event) { + return; + } +}); + +/** + * SVGElement addEventListener works with a custom string and single event arg, Event + */ +svgElement.addEventListener("beep", (event: Event) => { + if (event) { + return; + } +}); + +/** + * SVGElement addEventListener works with a custom string and single event arg, UIEvent + */ +svgElement.addEventListener("beep", (event: UIEvent) => { + if (event) { + return; } }); diff --git a/unittests/files/onerror.ts b/unittests/files/onerror.ts new file mode 100644 index 000000000..a3c52f08c --- /dev/null +++ b/unittests/files/onerror.ts @@ -0,0 +1,58 @@ +/** + * window.onerror works as intended with global event handler + */ +window.onerror = (message, src, lineno, colno, error) => { + if (message && src && lineno && colno && error) { + return; + } +}; + +const div: HTMLElement = document.createElement("div"); + +/** + * HTMLElement.onerror works with a single event arg, UIEvent + */ +div.onerror = (event: UIEvent) => { + if (event) { + return; + } +}; + +/** + * HTMLElement.onerror works with a single event arg, Event + */ +div.onerror = (event: Event) => { + if (event) { + return; + } +}; + +/** + * HTMLElement onerror is nullable + */ +div.onerror = null; + +const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg"); + +/** + * SVGElement.onerror works with a single event arg, UIEvent + */ +svg.onerror = (event: UIEvent) => { + if (event) { + return; + } +}; + +/** + * SVGElement.onerror works with a single event arg, Event + */ +svg.onerror = (event: Event) => { + if (event) { + return; + } +}; + +/** + * SVGElement onerror is nullable + */ +svg.onerror = null;