인프런 커뮤니티 질문&답변

KGinS님의 프로필 이미지
KGinS

작성한 질문수

Slack 클론 코딩[실시간 채팅 with React]

typescript 타입 관련 질문

작성

·

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가 안 나오는 게 좋습니다.

KGinS님의 프로필 이미지
KGinS
질문자

답변 알림이 작성해주신 시간에 하나만 있고 그 전엔 없네요. 뭔가 오류가 있었던 듯 합니다~

그래도 이렇게 한번 더 확인해주시고 답변 주셔서 감사합니다~

KGinS님의 프로필 이미지
KGinS

작성한 질문수

질문하기