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

도토잠보님의 프로필 이미지
도토잠보

작성한 질문수

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

회원가입 페이지 만들기

파라미터 타입지정

작성

·

357

1

안녕하세요 ! 

저는 이번에 웹팩 및 바벨 설정부터 죽 타입핑을 하며 익히고 잇는데요,  SignUp > index.tsx 부분의 일부코드인데 보시는 바와 같이 영상속 제로초님과는 다르게 `e`의 타입을 지정해주지 않으면 로컬자체가 켜지지 않더라고여 😅 혹시 제가 어느부분때문에 제로초님과 다르게 진행되고있는지 알 수 있을까요 ?

  const onChangeEmail = useCallback((e: any) => {
    setEmail(e.target.value);
  }, []); 

  const onChangeNickname = useCallback((e: any) => {
    setNickname(e.target.value);
  }, []);

  const onChangePassword = useCallback(
    (e: any) => {
      setPassword(e.target.value);
      setMissmatchError(e.target.value !== passwordCheck);
    },
    [passwordCheck], 
  );

  const onChangePasswordCheck = useCallback(
    (e: any) => {
      setPasswordCheck(e.target.value);
      setMissmatchError(e.target.value !== password);
    },
    [password],
  );

답변 2

2

React.ChangeEvent<HTMLInputElement>로 적어줘야하네요.

<input onChange={(e) => e}> 라고 친다음에 e위에 마우스커서 올리면 IDE가 어떤 타입인지 알려줍니다.

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

e에 any를 입력하지 않았을 때 발생하는 애러가 뭔가요?

도토잠보님의 프로필 이미지
도토잠보
질문자

ERROR in ./pages/SignUp/index.tsx:16:6
TS7006: Parameter 'e' implicitly has an 'any' type.
    14 |
    15 |   const onChangePassword = useCallback(
  > 16 |     (e) => {
       |      ^
    17 |       setPassword(e.target.value);
    18 |       setMissmatchError(e.target.value !== passwordCheck);
    19 |     },

sleact (webpack 5.72.1) compiled with 1 error in 555 ms

입니당

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

네네 저게 뜨면 매개변수에도 타입 붙여주어야 합니다.

도토잠보님의 프로필 이미지
도토잠보
질문자

답변너무 감사합니다 🙇‍♂️

질문을 하나 더 드려도 될까요 ?

어째서 제로초님은 파라미터 타입을 설정하지 않았는데도 에러가 나지 않는건가요 ? 🤔

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

리액트 몇 버전이신가요? 리액트 17버전에서는 useCallback의 e가 any로 자동 타이핑되어 있습니다.

도토잠보님의 프로필 이미지
도토잠보
질문자

package.json 확인해보니 18.1.0 사용되고 있습니당

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

그러면 아마 타이핑이 바뀌었을 수 있습니다. @types/react 에서요.

도토잠보님의 프로필 이미지
도토잠보
질문자

아아.. 어쩔수없는 부분이군요..ㅠㅠ 바쁘신데 답변너무감사드립니다 !!!!!!!

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

onSubmit같은 것은 e: React.FormEvent 이고 그냥 input은 e: React.ChangeEvent 입니다.

도토잠보님의 프로필 이미지
도토잠보
질문자

답변 너무 감사드립니다 ㅠㅠ 저러한 타입지정같은경우 구글링하면서 배워나가는게 더 나은가요? 아니면 인강이나 책보고 공부를 하는게 더 나을까요 ? 🤔

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

typescript 자체가 일종의 문서이므로 직접 타입들 확인하는 연습을 하셔야 합니다. 인강이나 책은 쓰는 타입만 써서 한계가 있습니다.

도토잠보님의 프로필 이미지
도토잠보
질문자

답변너무너무 감사드립니다 ㅠㅠ 오늘 정말 많이 알아가네요 ! 답변참고해서 공부방향 잡도록 할게요 감사합니다 !!

도토잠보님의 프로필 이미지
도토잠보

작성한 질문수

질문하기