본문 바로가기

프로젝트

타입 전역객체로 사용할때 협업시 문제점

 

onBoarding에서 받는 것: 

 

  gender: undefined,
  birthDay: '',
  height: undefined,
  weight: undefined,
  dietGoal: '',
  activityAmount: undefined,

 

 

 

문제점 :

 birthDay를 받고있음

 그걸 age로 변경되고 있음 

 

 

문제점 : 

받는 데이터와 보내는 데이터의 타입이 다름 

=> 똑같은 상태 중 몇개만 변경되었을 뿐인데 

다른 타입을 사용하고 있음 

그리고 옵셔널을 붙인것 있고 안붙인 것 있어서 

호환이 안되는 경우가 생김 

 

보내는 데이터

 

export interface userPutDataType {
  dietGoal?: string;
  activityAmount?: string;
  height?: number;
  weight?: number;
  gender?: string;
  age?: number;
  birthDay?: string;
}

 

그런데 한개의 state를 활용해서 

그 객체에 initialState, response state

 

받는 곳의 타입은 birthDay가 없었음 

(현재는 어떻게 되었는지 모름 )

 

받는 데이터의 타입 

 

export interface UserInfo {
  username?: string;
  dietGoal: string;
  activityAmount: string;
  height?: number;
  weight?: number;
  gender?: string;
  profileImage?: string;
  targetCalories?: number;
  age?: number;
  birthday?: string;
}

 

 

 

해결 : (해결중) 

아직 해결하지 못했다. 

any로 해놨는데 나중에 런타임에러가 날 것으로 예상된다 

함께 하는 프로젝트라 

내것만 수정해야 하고 

남의 것은 건드리지 말아야한다는 한계가 있어 

어떻게 설정해야 할지 고민 스럽다. 

 

 

 

앞으로의 문제점 발생하지 않기 위한 대비 :

 

1. 미리 타입 정의 합의 

받는 타입을 여러군데에서 쓸 경우 

미리 타입과 옵셔널 등을 함께 설정해놓고 

그걸 가져다 쓰는 방식으로 해야할 것같다 

협업시 각자 타입을 각자 사용하는데, 

특히 전역 상태의 경우 재사용해야하므로 

타입도 맞추는 것이 중요하다. 

 

그렇지 않으면 any로 궁여지책 사용할 수밖에 없다. 

 

 

2. 백엔드와 프론트엔드 데이터 객체 순서 맞춰놓기

또한 사용시 백엔드에서 받는 데이터 객체의 순서와 

프론트에서 사용하는 데이터 객체의 순서를 

함께 잘 맞추어야 

서로 보기도 편하고 디버깅하기도 편할 것 같다.