조회 109
익명
1월 26일
아래 코드와 같이 타입이 정의가 되어있는데 key={cancelActionPayload.action} 의 action에 빨간줄 쳐지고 'Property 'action' does not exist on type' 이라 에러가 뜨는데 제 생각에는 action 필드가 분명 있는 것 같은데 뭘 잘못 생각했을까요?ㅜㅜ
구체적이고 정성스러운 질문에 ↑Up 투표를 눌러주세요.
설명이 부족한 질문에 ↓Down 투표를 눌러주세요. 커리어리가 질문자에게 수정을 요청할게요.
답변 2
BEST 답변
안녕하세요. 제가 아는 선에서 최대한 설명드릴게요! 우선 해당 에러가 나는 이유는 컴퓨터의 입장에서 "action" field는 있을수도 있고, 없을수도 있어서 타입스크립트에서 에러를 뱉어주는거에요. 보시면 CancelActionPayload 타입이 3가지의 형태가 될 수 있는데 마지막 형태에서 action이 존재하지 않죠? 그러면 타입스크립트의 입장에서는 이렇게 생각할거에요. "CancelActionPayload 타입은 첫 번째 형태, 두 번째 형태, 세 번째 형태가 있는데 어느 형태가 될 지 나는 잘 모르겠어." 가 돼요. 사실 어떻게 보면 타입스크립트가 정말 고마운 역할을 해주고 있는거죠. 코딩을 하는 입장에서는 이 상황에 들어오는 "CancelActionPayload"은 action이 무조건 있어! 라고 상상할 수 있지만, 컴퓨터의 입장에서는 action이 없을 수도 있는 가능성이 있기 때문에 컴파일 단계에서 에러를 띄워주는거에요. 이런 상황에서 해결법은 CancelActionPayload 타입을 조금 더 쪼개서 확실하게 타입을 지정해는 방식이 있을 것 같아요. 혹은 타입 가드를 이용해서 해당 코드라인에서 CancelActionPayload의 타입을 확실하게 타입스크립트에게 알려주는 방식도 있을 수 있구요. 구글에 위의 키워드들로 검색을 해보시면 조금 더 자세한 내용들 볼 수 있을거에요! 감사합니다~
익명
작성자
1월 27일
아.. 이해했습니다 그렇군요!!!! 답변 감사합니다
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직 개발자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직 개발자들의 명쾌한 답변을 얻을 수 있어요.