我有一个关于转换代码的问题,该代码来自于与Angular 2中的HostListener装饰器一起的typescript(不是Safari问题,我只描述了我是如何发现这个问题的):
我的上传组件适用于所有浏览器,但在Safari上除外。我们发现Safari没有DragEvent。我有一个打字稿方法,看起来像这样:
@HostListener('drop', ['$event'])
public onDrop(event: DragEvent): void {
.......
}
在转换后的代码中,在转换后的方法上面有一个装饰器,类似这样:
t.b([ e.i(r.HostListener)(“dragover”, [ “$event” ]), t.c(“design:type”, Function), t.c(“design:paramtypes”, [ DragEvent ]), t.c(“design:returntype”, void 0) ], u.prototype, “onDragOver”, null),
如您所见,它为该方法添加了设计:paramtype元数据。关于打印到javascript的打字稿的天真想法是,javascript不是类型安全的,我的打字稿方法中的:DragEvent帮助转换器进行类型检查。
我怎么说,这个方法在Safari中失败了。当我现在将我的typescript方法中的事件参数的类型更改为:Event时,Safari运行良好。
我唯一能看到的是方法上方的转换代码中的元数据。但是如何以及在何处以及为何使用此元数据?或者为什么这在Safari中失败了,我在这里完全迷失了,但我真的很想理解它。
感谢您的描述。