2014-06-08 5 views
5

자바 스크립트 내가 여기 데의 문제점은 일반 자바 스크립트 이벤트 달리TypeScript에서 누른 키를 감지하는 방법은 무엇입니까?

//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 
} 

에 다음 줄에 타이프의 의미 상응하는 구문이 될 것입니다 무엇, 타이프 라이터 이벤트 클래스는 속성 enterKey 또는 which이 없습니다. 그렇다면 typescript 컴파일 오류가 발생하지 않고 어떤 키를 누르는 지 어떻게 감지 할 수 있습니까? 그리고 추악한 빨강은 흔들림이 생깁니다. 아래 그림과 같이

답변

17

당신은보다 전문적인 이벤트 유형 KeyboardEvent를 사용해야합니다 :

myFunc(data : string, evt : KeyboardEvent) 

당신은 또한 evt.enterKey에 대한 오류를 제거 할 경우 인터페이스를 확장하여 추가해야합니다 - 나는 '하지만, 가 아니므로 이것은 부동산임을 m 인식하지 기술 제어 키, 모든 이벤트의 속성이 CTRL, SHIFT 또는 ALT 같은 : 당신은 neee

interface KeyboardEvent { 
    enterKey: boolean; 
} 
2

을 d 이벤트를 등록하십시오. 예를 들면 다음과 같습니다.

class EventHandler { 
    static RegisterKeyPress(input: string){ 
     document.getElementById(input).addListener('keypress', (e: KeyboardEvent) =>{ 
      //You have yout key code here 
      console.log(e.keyCode); 
     } 
    } 
} 

해피 코딩!

관련 문제