я нашел следующую ссылку: Does TypeScript support TouchEvent?Поддерживает ли TypeScript 1.7.6 поддержку dts lib для touchevents?
Она имеет дело с вопросом, что у меня возникли. Согласно сообщению в верхней части статьи, в нем указано, что TypeScript 1.5.3 добавляет объявления для событий HTML Touch в lib.d.ts.
Поддерживает ли эти версии сенсорных событий TypeScript 1.7.6? Я получаю ошибку в Visual Studio 2015, которая заявляет: свойство «changedTouches» не существует в типе «Событие».
Для чего это требуется lib.d.ts. Я попытался использовать NuGet для загрузки последней версии jquery.TypeScript.DefinitelyTyped = "2.8.8", но это не работает.
Любые предложения?
Update Я проверил, что файл JQuery d.ts от NuGet такой же, как и на https://github.com/DefinitelyTyped/DefinitelyTyped.
Код сниппета
$('#previewEvent').on('mousedown touchstart', function(e) {
var original = e.originalEvent;
if (original.changedTouches && CheckMobile.isTouch_p) {
const touchobj = original.changedTouches[0];
swipedir = 'none';
distX = 0;
distY = 0;
startX = touchobj.pageX;
startY = touchobj.pageY;
// record time when finger first makes contact with surface
startTime = new Date().getTime();
return !0;
} else if (!CheckMobile.isTouch_p) {
return !0;
}
return !0;
});
Update Первоначально я думал, lib.d.ts упомянутые JQuery. Я ошибался, это одна из библиотек, которые установлены с помощью TypeScript.
Я обновил библиотеку, но все равно имею ту же ошибку. Файл lib.d.ts, похоже, имеет сенсорные определения, что является шагом в правильном направлении.
Эта проблема представляется несовместимой между интерфейсом jQuery BaseJQueryEventObject и интерфейсом TypeScript TouchEvent. Я еще не знаю, как решить проблему, но я могу устранить ошибку, объявив var original: any = e.originalEvent, который маскирует несовместимость.
Любые идеи о том, как правильно решить этот вопрос? Я предполагаю, что потребуется третий файл d.ts, чтобы сгладить интерфейсы.
Спасибо ...
Большое спасибо за ваш быстрый ответ. Это то, что я искал, но не знал этого! Ваша рецензия была ясной и имеет смысл. Я использовал instanceof раньше, но не связался с тем, как решить разницу типов, о которой TypeScript жаловался. Недавно я обновил TypeScript с 1.3.x до 1.7.6. Мне нужно сделать домашнюю работу, чтобы посмотреть, что еще добавлено. – Highdown
У меня есть одна небольшая коррекция вашего предложения для других, у кого может быть такая же проблема. Первый, если блок генерирует исключение, когда TouchEvent НЕ определен, как это имеет место для настольного компьютера/ноутбука, который не поддерживает касание. В моем случае я изменил первый блок if, чтобы включить тест для касания, т. Е. (CheckMobile.isTouch_p && original instanceof TouchEvent), чтобы исключить исключение. – Highdown