我只是想用我的KeyboardEvent做这个
var tag = evt.target.tagName.toLowerCase();
而事件。target是EventTarget类型,它不继承自Element。所以我必须像这样转换它:
var tag = (<Element>evt.target).tagName.toLowerCase();
这可能是因为一些浏览器不符合标准,对吧?TypeScript中正确的浏览器不可知实现是什么?
附注:我使用jQuery来捕获KeyboardEvent。
使用typescript,我使用了一个只适用于我的函数的自定义接口。示例用例。
handleChange(event: { target: HTMLInputElement; }) {
this.setState({ value: event.target.value });
}
在这种情况下,handleChange将接收一个目标字段为HTMLInputElement类型的对象。
在后面的代码中,我可以使用
<input type='text' value={this.state.value} onChange={this.handleChange} />
更清晰的方法是将接口放到一个单独的文件中。
interface HandleNameChangeInterface {
target: HTMLInputElement;
}
然后使用下面的函数定义:
handleChange(event: HandleNameChangeInterface) {
this.setState({ value: event.target.value });
}
在我的用例中,明确定义了handleChange的唯一调用者是输入文本的HTML元素类型。