javascript - KeyboardEvent 打字稿的索引签名
问题描述
我正在使用严格模式的打字稿,我们为这样的接口编写索引签名[key: string]: any
但是我们应该如何为键盘事件等事件编写索引签名,以下代码出现错误'KeyboardEvent' has no index signature.ts(7017)
public checkInput(event: KeyboardEvent): void {
if (event['keyIdentifier'] !== undefined) {
keyCode = event['keyIdentifier'];
}
}
解决方案
正如 MDN条目所述,这是一个非标准的、已弃用的功能:
已弃用的 KeyboardEvent.keyIdentifier 只读属性返回一个“键标识符”字符串,可用于确定按下的键。它的非弃用替代品是KeyboardEvent.key。
如果您坚持使用它,您可以keyIdentifier
转换为适当的键KeyboardEvent
:
public checkInput(event: KeyboardEvent): void {
if (event['keyIdentifier' as 'key'] !== undefined) {
const keyCode = event['keyIdentifier' as 'key'];
}
}
其他选项是转换为any
( (event as any)['keyIdentifier']
) 或增加全局类型:
interface KeyboardEvent {
keyIdentifier: string
}
class s {
public checkInput(event: KeyboardEvent): void {
if (event.keyIdentifier !== undefined) {
const keyCode = event.keyIdentifier;
}
}
}
推荐阅读
- android - 无法在 Android Studio 中点击 XML 预览
- branch.io - 我们无法访问中国的 branch.io
- node.js - 面对此错误“加载资源失败:服务器响应状态为 404(未找到)”在 web
- sql - SQL 事务归因
- ios - 如何单击 UITabBarItem 并显示新的 ViewController?
- mysql - 错误 1932 (42S02):引擎中不存在表 'xxx.wp_users'
- mysql - SQL - 从几个连接中获取表的行数
- python-3.x - 使用来自另一个类变量的信息更新 ScrolledText 框
- c# - 学生信息的数据绑定
- dart - 什么时候需要对flutter(dart)中的变量使用final