작성
·
253
0
안녕하세요 선생님.
강좌를 모두 듣고 ,
혼자서 복습할 겸 파일 하나하나 다시 한 번 보고 있습니다.
타입스크립트를 좀 더 공부해볼려고
강의시간에 미처 다 다루지 못하고 넘어간 타입들을 하나하나 지정해주고 있는데요,
마우스 Click 이벤트와 관련된 event의 타입을 정할 때 React.MouseEvent<...>로 지정해주고 나서,
예를 들어 id에 접근을 하려고 한다면
e.target.id 로 접근하면 제대로 타입스크립트 오류가 뜨고, 반면 e.currentTaget.id로 접근하면 정상적으로 접근할 수 있었습니다.
해당 문제를 구글링을 해보니, Event Delegation과 관련해서 e.target은 마우스에 무엇이 클릭되느냐에 따라 그때그때 담기는 대상이 다르기에 이를 EventTarget으로 처리하지 않아 e.target에서 그 밑에 있는 property를 제대로 탐색할 수 없다고 이해했습니다. (구글링을 많이 해보았으나 관련 내용이 충분하지 못해 정확한 정보인지는 모르겠습니다)
위 과정에서 두 가지 의문점이 생겼는데요!
1) 그렇다면 타입스크립트는 Event Delegation과 관련된 기법을 지양한다고 봐도 될까요?
2) 강의에서는 원활한 강의 진행 + 굳이 안 해도 정상 작동하는 이유로 event와 같은 몇몇 매개변수의 타입을 지정하지 않고 넘어가셨는데, 이 경우 대부분 any 타입으로 지정되는 것으로 알고 있습니다. 타입스크립트에서 any로 사용하는 것은 최대한 지양한다고 알고 있는데, 실무에서도 위와 유사한 이유로 타입 지정을 건너뛰는 경우가 빈번한가요?
매번 감사드립니다 :)
답변 1
1
제가 이거 답변을 드린 것 같았는데 답변이 안 간 건가요?
1. 지양하는 게 아니라 방법이 없습니다. 어떤 태그에서 이벤트가 눌릴지 사전에 알 수 있는 방법이 없으니까요. 이럴 때 어쩔 수 없이 any를 쓸 수 밖에 없습니다.
2. 대부분 any로 지정되지 않긴 합니다. 다만 사용하는 라이브러리의 타이핑이 any로 되어있으면 타입추론도 any로 됩니다. 또한 고차함수에서는 any로 나오는 경우가 많습니다. 웬만하면 any가 안 나오는 게 좋습니다.
답변 알림이 작성해주신 시간에 하나만 있고 그 전엔 없네요. 뭔가 오류가 있었던 듯 합니다~
그래도 이렇게 한번 더 확인해주시고 답변 주셔서 감사합니다~