개발자

프론트에서는 관계형디비로 되어있는 백엔드에서 주는 응답 그대로 타입으로 써야하나요?

2024년 03월 26일조회 98

안녕하세요 예를들어 서버에서 아래와같이 응답을 준다고 할떄 end point : aimal/[id] response : { id:1 name:'코끼리', weight:1000, color: 'grey' } end point : getAnimals response:{ total_length:1, data:[{ id:1 name:'코끼리', weight:1000, } ] } 물론 위의 예시처럼 갑자기 배열로 호출시 특정 키(위 예시에서는 color)를 빼는 경우는 없겠지만, 비즈니스 로직을 처리하다보면 위와 같이 특정 api에서는 딱히 필요없는 값이라서 특정키가 빠지는 경우가 있더라구요 그런데 프론트엔드 입장에서 type Animal = { id:number; name:string; weight:number; color:Color } 이런식으로 타입을 정의해놓으면 특정 키가 들어오지 않았을 때 대응이 안되서 결국 모든 키를(id같은 특수 키 제외)nullable하게 해야하는것 같은데 좀 이상하기도 하고... 일반적으로 이런경우는 어떻게 해결하시나요?

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

답변 2

인기 답변

ㄱㅎㅁ님의 프로필 사진

type Animal = { id:number; name:string; weight:number; } type AnimalDetail = Animal & { color: Color; } 이런식으로 하는방법도 있을수 있겠네요. API란 약속입니다. 백엔드와 협의를 통해 약속을 하시면 될꺼 같구요, 개인적으로는 api별로 위와 같은 식의 느낌으로라도 분리를 해놓는게 유지보수가 좋지 않을까 합니다.

profile picture

익명

작성자

2024년 03월 26일

그런데 문제가 color가 빠질떄도있고 name이 빠질때도 있고 weight가 빠질때도 있습니다. type AnimalColor = { color : Color} type AnimalName = {name : string} ... type Animal = { id: number} & AnimalName & AnimalColor .... 이런식으로 작성해보려고 하기도 했는데 가독성이 너무 떨어지는것같기도 하고 일반적인 방법이 아닌것같아서 다른분들 의견이 궁금했습니다

허니님의 프로필 사진

기본 타입을 정해놓고 특정 속성만 사용하거나 제외해야 한다면 유틸리티 타입의 사용도 고려해 볼 수 있습니다

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

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

또는

이미 회원이신가요?

목록으로

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