How to detect key pressed in TypeScript?

Issue

What would be the semantically equivalent syntax in typescript to the following line in 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
}

The trouble I’m having here is unlike regular javascript event, typescript Event class does not have a property enterKey or which. So how do I detect which key is being pressed without getting typescript compile error and the ugly red wiggly underline?

Solution

You need to use the more specialised event type KeyboardEvent, as shown below:

myFunc(data : string, evt : KeyboardEvent)

If you want to also remove errors for evt.enterKey you’ll need to add it by extending the interface – although I’m not aware that this is a real property as it isn’t technical a control key, like CTRL, SHIFT or ALT, which all have properties on the event:

interface KeyboardEvent {
    enterKey: boolean;
}

Answered By – Fenton

Answer Checked By – Marilyn (AngularFixing Volunteer)

Leave a Reply

Your email address will not be published.