Angular 为什么可以';我不能在Safari中使用TouchEvent吗

Angular 为什么可以';我不能在Safari中使用TouchEvent吗,angular,typescript,firefox,safari,webkit,Angular,Typescript,Firefox,Safari,Webkit,我有一个关于Angular 8的项目,我想处理触摸事件。示例处理程序: @HostListener('touchend', ['$event']) onTouchend(event: TouchEvent) { event.preventDefault(); } 我在MacOS 10.15上运行,这在我的Chrome上运行得很好,但在Safari中我收到了这个错误消息,我的应用程序没有运行:“ReferenceError:找不到变量:TouchEvent”和在Firefox中“Refe

我有一个关于Angular 8的项目,我想处理触摸事件。示例处理程序:

@HostListener('touchend', ['$event']) onTouchend(event: TouchEvent) {
    event.preventDefault();
}

我在MacOS 10.15上运行,这在我的Chrome上运行得很好,但在Safari中我收到了这个错误消息,我的应用程序没有运行:“ReferenceError:找不到变量:TouchEvent”和在Firefox中“ReferenceError:TouchEvent未定义”。如果我将事件类型更改为any,它将在Safari和Firefox中运行。为什么我不能在Safari中使用TouchEvent类型?

在应用程序的某个地方添加以下行:

导出类型AppTouchEvent=TouchEvent


然后在ts文件中使用
AppTouchEvent
,而不是
TouchEvent

浏览器中怎么会出现typescript错误?一旦你的应用程序在JS中传输,就没有类型了,所以浏览器会完全忽略它。你确定你没有遗漏什么吗?从何处导入“TouchEvent”?我认为Safari相信TouchEvent是一个变量,这是有原因的。我不导入TouchEvent,它是Typescript类型定义的一部分。我尝试创建一个新的空Angular项目,然后只将Hostlistener添加到一个新组件中,但我没有得到错误,因此是我的代码中的某些内容导致了错误。您是否“真的”将ts传输到js中?你能看到生成的JS,并在文件中找到字符串“TouchEvent”吗?多么奇怪的bug。至少修复起来很容易。