为什么关键属性没有被识别为打字稿中事件类型的一部分

问题描述 投票:0回答:3

我有一个函数可以使用事件找出用户按下的按钮,并使用 event.key 属性。但是,在函数的参数中,如果我为其分配类型 Event,编译器会抱怨

“事件”类型中不存在属性“key”。

这是我的代码。

function getDirection(e:Event):void{
    let directionCode:number = e.key; 
    // code going on here
}

为什么类型事件上的关键属性未被识别。

typescript events types
3个回答
50
投票

因为

Event
没有该属性,所以
KeyboardEvent
就是你想要的类。

function getDirection(e:KeyboardEvent):void{
    let directionCode:number = e.keyCode; 
    let directionCodeStr:string = e.key; 
    // code going on here
}

1
投票

您应该输入cast您的事件:

myInput.addEventListener('keyup', (e) => {
    let keyboardEvent = <KeyboardEvent> e;
    if(keyboardEvent.keyCode === 40){
        //...
    }
}

另外,由于 event.kecode 已被弃用,您可以执行以下操作:

myInput.addEventListener('keyup', (e) => {
    let keyboardEvent = <KeyboardEvent> e;
    if(keyboardEvent.key === 'ArrowDown'){
        //...
    }
}

0
投票

防止通过键盘按键和右键单击进行检查

document.addEventListener('contextmenu', (e) => e.preventDefault());

函数 ctrlShiftKey(e, keyCode) {

return e.ctrlKey && e.shiftKey && e.keyCode === keyCode.charCodeAt(0); }

// 禁用 F12、Ctrl + Shift + I、Ctrl + Shift + J、Ctrl + U

document.onkeydown = (e) => {

如果( 事件.keyCode === 123 ||

ctrlShiftKey(e, 'I') ||
ctrlShiftKey(e, 'J') ||
ctrlShiftKey(e, 'C') ||
(e.ctrlKey && e.keyCode === 'U'.charCodeAt(0)))
return false };
© www.soinside.com 2019 - 2024. All rights reserved.