2016-11-29 2 views
4

텍스트 영역 양식의 onChange 속성은 React.EventHandler<React.FormEvent<HTMLTextAreaElement>>이 필요합니다.React 15 + Typescript : React.FormEvent <T> 타이핑이 불완전합니까?

토끼 구멍 아래로

우리는

interface EventHandler<E extends SyntheticEvent<any>> { 
    (event: E): void; 
} 

type FormEventHandler<T> = EventHandler<FormEvent<T>>; 

/* ... */ 

interface FormEvent<T> extends SyntheticEvent<T> { 
} 

은 즉, onChange가 단순히 FormEvent을 받아 무효 반환하고 FormEvent 현재 SyntheticEvent 동일 기능을 원하는 것을 찾을 수 있습니다.

SyntheticEvent<T>.target: EventTargetEventTargetvalue을 정의하지 않습니다.

내가 currentTarget: EventTarget & T인데 T가 HTMLTextInputArea 인 것으로 나타났습니다. 그 값은 정의되어있는 것 같습니다. 그러나 form handling pages showevent.target이 보입니다. event.currentTarget이 아닙니다. 차이점이 뭐야? 타이핑이나 의사를 따라야할까요?

편집 : 나는 내 자신의 질문에 대답했다. currentTarget은 처리기를 바인딩 한 요소이고 target은이 이벤트를 발생시킨 작업을받은 요소입니다. 나는 항상 currentTarget에서 값을 읽고 싶습니다. 그래서이 경우 입력이 나를 올바르게 이끌고 있으며 문서가 저를 잘못 이끌고 있다고 생각합니다.

답변

2

수정 사항이 정확합니다.

이것은 간단한 문제이지만 악명 높은 currentTarget/target 수수께끼는 불행히도 React typings의 즐거운 편집 전쟁으로 이어집니다. 문서가 target를 사용하는이 반응하는 이유는 여기 explicated로 그들은 단순 가치 있음은 자식 요소에 아무런 차이가 없기 때문입니다 :

https://github.com/facebook/react/pull/9279

당신이 일을 씻으보다 철저한 기준이 필요하면, 당신이 할 수있는 이 주제에 관한 나의 중재 중 하나를 읽으십시오 :

https://github.com/DefinitelyTyped/DefinitelyTyped/issues/11508#issuecomment-256045682