typescript中与javascript中的下一行在语义上等价的语法是什么

//Some knockout event handler.
myFunc(data : string, evt : Event) {
    //If enter or tab key up were detected add the excuse to the collection.
    if(evt.enterKey || evt.which == 9)
        //Do Something
}

这里的问题是,与常规javascript事件不同,typescript事件类没有属性enterKeywhich.那么,如何在不出现typescript编译错误和难看的红色摇摆下划线的情况下检测按下了哪个键呢?

推荐答案

您需要使用更专业的事件类型KeyboardEvent,如下所示:

myFunc(data : string, evt : KeyboardEvent)

如果你还想删除evt.enterKey的错误,你需要通过扩展接口来添加它——尽管我不知道这是一个不动产,因为它不是一个技术控制键,比如CTRLSHIFTALT,它们都有关于事件的属性:

interface KeyboardEvent {
    enterKey: boolean;
}

Typescript相关问答推荐

Angular 17 -如何在for循环内创建一些加载?

TypeScript类型不匹配:在返回类型中处理已经声明的Promise Wrapper

是否可以根据嵌套属性来更改接口中属性的类型?

为什么typescript要把这个空合并转换成三元?

React typescribe Jest调用函数

Next.js错误:不变:页面未生成

如果字符串文字类型是泛型类型,则用反引号将该类型括起来会中断

如何在编译时为不带常量的参数引发错误

缩小并集子键后重新构造类型

分解对象时出现打字错误

Select 下拉菜单的占位符不起作用

从对象类型描述生成类型

将带点的对象键重新映射为具有保留值类型的嵌套对象

跟踪深度路径时按条件提取嵌套类型

是否可以通过映射类型将函数参数约束为预定义类型?

TypeScrip:从嵌套的对象值创建新类型

有没有更干净的方法来更新**key of T**的值?

JSX.Element';不可分配给类型';ReactNode';React功能HOC

Angular另一个组件的nativeelement未定义

为什么 TypeScript 类型条件会影响其分支的结果?