我只是想用我的KeyboardEvent做这个
var tag = evt.target.tagName.toLowerCase();
而事件。target是EventTarget类型,它不继承自Element。所以我必须像这样转换它:
var tag = (<Element>evt.target).tagName.toLowerCase();
这可能是因为一些浏览器不符合标准,对吧?TypeScript中正确的浏览器不可知实现是什么?
附注:我使用jQuery来捕获KeyboardEvent。
在处理来自输入字段的事件时,我通常会遇到这个问题,比如key up。但是请记住,事件可以起源于任何地方,例如文档上的keyup侦听器,其中没有关联的值。所以为了正确地提供信息,我提供了一个额外的类型:
interface KeyboardEventOnInputField extends KeyboardEvent {
target: HTMLInputElement;
}
...
onKeyUp(e: KeyboardEventOnInputField) {
const inputValue = e.target.value;
...
}
如果函数的输入类型是Event,你可能需要告诉typescript它实际上是什么:
onKeyUp(e: Event) {
const evt = e as KeyboardEventOnInputField;
const inputValue = evt.target.value;
this.inputValue.next(inputValue);
}
例如,这在Angular中是必需的。