TS2554预期有1个参数,但HTMLImageElement onerror()却有0个参数

时间:2019-02-14 01:48:22

标签: typescript

我正在创建图像并附加一个onload处理程序,该处理程序在发生不良情况时会调用onerror

var image = new Image();
image.onload = function() {
    let img = this as HTMLImageElement;
    if (...) {
        img.onerror();
    }
};

但是我在img.onerror()行中遇到此错误:

TS2554 Expected 1 argument but got 0 

我该如何解决? onerror的预期参数是什么?

1 个答案:

答案 0 :(得分:1)

GlobalEventHandlers.onerror的MDN文档中所述:

  

element.onerror接受一个具有类型Event

的单个参数的函数

这适用于所有元素类型,包括HTMLImageElement。对于错误处理程序,使用ErrorEvent对象似乎是合乎逻辑的,因此您可以在代码中执行以下操作:

if (...) {
    let event = new ErrorEvent('error', {
        message: 'Something bad happened.'
    });
    img.onerror(event);
}

但是,请注意,以上代码仅立即调用附加的事件处理程序(如果未将img.onerror设置为函数,则该操作将失败)。

一个更优雅的解决方案是仅触发事件,然后让浏览器以与处理所有其他事件相同的方式处理该事件,包括冒泡到父元素等。您可以通过替换img.onerror(event)来轻松实现与img.dispatchEvent(event)

有关触发事件的更多信息,请参见this MDN page