这对我来说是个新情况,我使用TypeScript已有很长时间了,但是却在XMLHttpRequest
上苦苦挣扎。
request.open('GET', path);
request.onload = () => {
// this is fine
}
request.onerror = (e: ErrorEvent) => {
// i can't figure this out
this.registerError(e);
}
如何正确处理该错误响应?我上面的代码在编译过程中失败:
错误TS2322:类型(e: ErrorEvent) => void
无法分配给类型(this: XMLHttpRequest, ev: ProgressEvent) => any
我没想到。
如果您将代码更改为
request.onerror = (this: XMLHttpRequest, ev: ProgressEvent) => {
};
这不是有效的打字稿。即使使用this
作为参数名称,也令人难以置信。
是否可以提供一个示例来捕获XMLHttpRequest错误?
答案 0 :(得分:2)
之所以不能指定this
是因为您使用的是箭头功能=>
。您只需要更改参数的类型:
request.onerror = (e: ProgressEvent) => {
}
您根本不需要指定类型,因为根据onerror
的类型可以推断出该类型
request.onerror = (e) => {
e // is ProgressEvent
}
如果您使用常规函数,则可以指定this
request.onerror = function(this: XMLHttpRequest, e: ProgressEvent) {
this // is XMLHttpRequest
}
尽管您并不需要,因为它会根据onerror
的类型隐式输入。
request.onerror = function(e: ProgressEvent) {
this // is still XMLHttpRequest
}