📌  相关文章
📜  类型“EventTarget”上不存在属性“结果”-TypeScript (1)

📅  最后修改于: 2023-12-03 15:27:27.053000             🧑  作者: Mango

问题描述

当在 TypeScript 程序中存在以下代码时:

const xhr: XMLHttpRequest = new XMLHttpRequest();
xhr.open('GET', 'https://example.com/api');
xhr.send();
xhr.addEventListener('load', () => {
  const result = xhr.result; // error
});

在将 XMLHttpRequest 的响应结果赋值给 result 变量时,TypeScript 编译器会报错并提示:

类型“XMLHttpRequest”上不存在属性“result”。

这是因为 XMLHttpRequest 并不具有 result 属性。

解决方案

可以将 result 属性更改为 response 属性,因为 XMLHttpRequest 相应的数据保存在 response 属性中。

const xhr: XMLHttpRequest = new XMLHttpRequest();
xhr.open('GET', 'https://example.com/api');
xhr.send();
xhr.addEventListener('load', () => {
  const result = xhr.response;
});

这样可以避免编译器的报错。

总结

当 TypeScript 报错指出某个类型的属性不存在时,需要检查代码中是否使用了错误的属性。在需要获取 XMLHttpRequest 响应数据时,应该使用 response 属性而非 result 属性。