#javascript #web-applications #typescript
#javascript #веб-приложения #typescript
Вопрос:
Когда я выполняю AJAX-запрос в typescript, он работает до тех пор, пока я не попытаюсь получить ответ:
let req = new XMLHttpRequest();
req.open('GET','img/spritesheet.json',true);
req.send();
req.responseType = 'json';
req.onload=(data)=>{
var json = data.currentTarget.response;
}
Он выдает мне ошибку:
«Свойство ‘response’ не существует для типа ‘EventTarget’
Каким бы крутым ни был typescript, некоторые вещи не имеют абсолютно никакого смысла. Каково решение для выяснения этого?
Комментарии:
1. Не могли бы вы опубликовать полный код здесь?
2. Решение: не используйте typescript : P
3. Это полный код для запроса ajax.
4. Возможно
json = req.response
5. или просто используйте выборку…
fetch(url).then(res => res.json()).then(json => { ... })
Ответ №1:
Сигнатура для функции обратного вызова load является:
(ev: Event) => any
Где событие — это общее событие, которое выглядит следующим образом:
interface Event {
...
currentTarget: EventTarget;
...
}
И EventTarget является:
interface EventTarget {
addEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void;
dispatchEvent(evt: Event): boolean;
removeEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void;
}
У которого нет response
свойства.
Вот почему вы получаете эту ошибку, что касается того, как с ней бороться, почему бы вам просто не использовать объект запроса?
Он имеет свойства response и responseText, которые вы можете использовать, нет необходимости получать данные из объекта события, который получает обратный вызов.