我一直在使用XMLHttpRequest的與打字稿的問題,這裏是一個打字稿類:使用XMLHttpRequest打字稿衝突「這個」
class Myclass {
constructor() {
this.init();
}
private init() {
const req = new XMLHttpRequest();
req.onreadystatechange = (event: Event): any => {
if (this.readyState === XMLHttpRequest.DONE) {
if (this.status === 200) {
this.render(this.responseText)
}
}
};
req.open('GET', '/api/test', true);
req.send(null);
};
private render(data:any) {
console.log(`use ${data}`)
}
}
在這種情況下,「這」將參照打字稿類MYCLASS
和使用JavaScript函數'this'將引用請求,我將無法調用我的類方法render()。
我該如何調用render()方法並仍然可以訪問響應?
在給定的上下文中,'this'只有一個值。它不能同時指向請求_和_到類。由於您使用雙箭頭函數,所以類上下文被傳遞,因此'this'引用類並且'this.readyState'可能未定義。 –
如果這是一個普通的JS問題,我會把它放在「另一個不恰當的箭頭函數的使用」的問題上,但我不知道TypeScript在那裏是否有所作爲。 – Quentin