Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript TS2554应为1个参数,但HTMLImageElement onerror()的参数为0_Typescript - Fatal编程技术网

Typescript TS2554应为1个参数,但HTMLImageElement onerror()的参数为0

Typescript TS2554应为1个参数,但HTMLImageElement onerror()的参数为0,typescript,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

我正在创建一个映像,并附加一个
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
的预期参数是什么?

如MDN文档中所述:

element.onerror
接受具有类型为的单个参数的函数

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

if(…){
let event=new ErrorEvent('error'{
信息:“发生了不好的事情。”
});
img.onerror(事件);
}
但是,请注意,上面的代码只是立即调用附加的事件处理程序(如果未将
img.onerror
设置为函数,则会失败)

更优雅的解决方案是只触发事件,让浏览器以处理所有其他事件的方式处理它,包括冒泡到父元素等。通过将
img.onerror(event)
替换为
img.dispatchEvent(event)
,可以非常轻松地实现这一点

有关触发事件的更多信息,请参阅

看看这个例子-