typescript - 如何在 Typescript 中使用 XMLHttpRequest?
问题描述
这对我来说是一个新情况,我使用 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 错误的示例?
解决方案
您无法指定的原因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
}
推荐阅读
- c++ - 具有不同类型的 CUDA 每线程数组
- amazon-web-services - Py4JJavaError:调用 o57.showString 时出错。: org.apache.spark.SparkException:
- apache-kafka - 如何防止我的 Kafka Streams 应用程序进入 ERROR 状态?
- sql-server - 如何在 SQL Server 中回滚一次插入 3 个表的数据
- javascript - 如何在网络应用程序上显示未知数量的图像?
- ios - 键盘出现时没有动画第一次 TextView 成为 Swift 中的第一响应者
- jquery - 如何在jquery中获取select2元素的最后一个选择或未选择的元素?
- pyspark - 如何将字符串转换为 Pyspark 中的函数(动态函数)
- python - Pygame 中 3.5 英寸 LCD 的屏幕尺寸是多少?
- cloud - 具有多区域 HA 的微服务