개발자

이미 정의된 타입에 'Property xxx does not exist on type' 오류가 발생해요

2023년 01월 26일조회 145

아래 코드와 같이 타입이 정의가 되어있는데 key={cancelActionPayload.action} 의 action에 빨간줄 쳐지고 'Property 'action' does not exist on type' 이라 에러가 뜨는데 제 생각에는 action 필드가 분명 있는 것 같은데 뭘 잘못 생각했을까요?ㅜㅜ

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

인기 답변

정현수님의 프로필 사진

안녕하세요. 제가 아는 선에서 최대한 설명드릴게요! 우선 해당 에러가 나는 이유는 컴퓨터의 입장에서 "action" field는 있을수도 있고, 없을수도 있어서 타입스크립트에서 에러를 뱉어주는거에요. 보시면 CancelActionPayload 타입이 3가지의 형태가 될 수 있는데 마지막 형태에서 action이 존재하지 않죠? 그러면 타입스크립트의 입장에서는 이렇게 생각할거에요. "CancelActionPayload 타입은 첫 번째 형태, 두 번째 형태, 세 번째 형태가 있는데 어느 형태가 될 지 나는 잘 모르겠어." 가 돼요. 사실 어떻게 보면 타입스크립트가 정말 고마운 역할을 해주고 있는거죠. 코딩을 하는 입장에서는 이 상황에 들어오는 "CancelActionPayload"은 action이 무조건 있어! 라고 상상할 수 있지만, 컴퓨터의 입장에서는 action이 없을 수도 있는 가능성이 있기 때문에 컴파일 단계에서 에러를 띄워주는거에요. 이런 상황에서 해결법은 CancelActionPayload 타입을 조금 더 쪼개서 확실하게 타입을 지정해는 방식이 있을 것 같아요. 혹은 타입 가드를 이용해서 해당 코드라인에서 CancelActionPayload의 타입을 확실하게 타입스크립트에게 알려주는 방식도 있을 수 있구요. 구글에 위의 키워드들로 검색을 해보시면 조금 더 자세한 내용들 볼 수 있을거에요! 감사합니다~

profile picture

익명

작성자

2023년 01월 27일

아.. 이해했습니다 그렇군요!!!! 답변 감사합니다

류민우님의 프로필 사진

안녕하세요!!!! 일단 action에 경고가 뜨는 이유는 타입 선언에 문제가 있어서 그렇습니다. cancelActionPayload라는 타입에 여러 객체 형태의 타입이 정의되어 있는데 마지막 타입 객체에 action이라는 타입이 빠져있가 때문에 타입스크립트는 action이라는 데이터가 있을 수도 있고 없을 수도 있기 때문에 경고를 출력하는것입니다. 그렇기 때문에 질문으로 주신 코드는 key={cancelActionPayload?.action} 이라고 작성해야 에러가 출력되지 않습니다 도움이 되셨기를 바랍니다!!!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!