+-
本人刚开始使用 ts,所以遇到一下问题,请赐教。
对 EventTarget 的 addEventListener 方法进行改写
const originAddEventListener = window.EventTarget.prototype.addEventListener
window.EventTarget.prototype.addEventListener = function (
type: string,
listener: EventListenerOrEventListenerObject,
options?: boolean | AddEventListenerOpts,
useCapture?: boolean,
wantsUntrusted?: boolean): any {
// eslint-disable-next-line no-useless-catch
try {
return originAddEventListener.call(this, type, listener, options, useCapture, wantsUntrusted)
} catch (error) {
throw error
}
}
然后再对改写后的 addEventListener 进行调用时
window.addEventListener('error', (
e: any,
url: string,
lineNo: number,
colNo: number,
error: Error): any => {
// TODO
}, true)
报错:
没有与此调用匹配的重载。
第 1 个重载(共 2 个),“(type: "error", listener: (this: Window, ev: ErrorEvent) => any, options?: boolean | AddEventListenerOptions): void”,出现以下错误。
类型“(e: any, url: string, lineNo: number, colNo: number, error: Error) => void”的参数不能赋给类型“(this: Window, ev: ErrorEvent) => any”的参数。
第 2 个重载(共 2 个),“(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void”,出现以下错误。
类型“(e: any, url: string, lineNo: number, colNo: number, error: Error) => void”的参数不能赋给类型“EventListenerOrEventListenerObject”的参数。
不能将类型“(e: any, url: string, lineNo: number, colNo: number, error: Error) => void”分配给类型“EventListener”。
请问,代码错在什么地方? 请赐教。