services.generated.ts 파일의 타입 구조와 활용 방법을 알아봅니다.
공유 타입 개요
단일 파일
services.generated.ts모든 타입 한 곳에
자동 생성
백엔드에서 추출수동 작업 불필요
타입 재사용
Export된 타입프로젝트 전체 사용
일관성
단일 진실 공급원타입 충돌 없음
services.generated.ts 구조
파일 개요
Sonamu는 모든 타입과 Service를 단일 파일에 생성합니다.- 보통 1,000 ~ 5,000 줄
- Entity와 API가 많으면 10,000 줄 이상도 가능
- 하지만 모두 자동 생성되므로 관리 부담 없음
타입 종류
1. Entity 타입
데이터베이스 테이블의 구조를 나타냅니다.- 백엔드 Entity와 완전히 동일
- 모든 필드 타입이 정확히 매핑됨
- null, undefined, 유니온 타입 모두 보존
2. Subset 타입
Entity의 부분 집합을 정의합니다.- A: 최소 필드 (id + 핵심 1~2개)
- B: 중간 필드 (A + 추가 정보)
- C: 전체 필드
3. API 파라미터 타입
API 함수의 파라미터를 정의합니다.4. API 응답 타입
API 함수의 반환 타입을 정의합니다.5. TanStack Query 관련 타입
React Hook에서 사용하는 타입들입니다.타입 재사용
Type Helper 활용
TypeScript의 유틸리티 타입으로 기존 타입을 재사용합니다.컴포넌트 Props
생성된 타입을 Props로 사용합니다.폼 데이터 타입
API 파라미터 타입을 폼 데이터로 사용합니다.상태 관리
전역 상태에서도 타입을 재사용합니다.네임스페이스 활용
Service 그룹화
Entity별로 Service가 Namespace로 그룹화됩니다.- 이름 충돌 방지 (getUser vs getPost)
- 관련 함수들이 논리적으로 그룹화
- Import가 간결해짐
- IDE 자동 완성이 더 정확해짐
Type Import
타입만 import할 때는type 키워드를 사용합니다.
import type은 컴파일 후 제거됨- 번들 크기 최적화
- 빌드 속도 향상
파일 크기 관리
대규모 프로젝트
Entity와 API가 많으면 파일이 매우 커질 수 있습니다.- ✅ 자동 생성: 수동 관리 불필요
- ✅ Tree-shaking: 사용하지 않는 코드는 번들에서 제외
- ✅ IDE 성능: 현대 IDE는 큰 파일도 문제없음
- ✅ 타입 체크: TypeScript 컴파일러가 효율적으로 처리
Code Splitting
필요하면 동적 import로 코드를 분할할 수 있습니다.버전 관리
Git에 포함 여부
포함하는 경우 (권장):- Pull 받으면 바로 사용 가능
- 백엔드 없이도 프론트엔드 개발 가능
- 타입 변경 이력 추적 가능
- Conflict 발생 적음
- 각자 최신 버전 생성
- Git 히스토리가 깔끔
충돌 해결
Merge conflict 발생 시:디버깅
생성된 타입 확인
IDE에서 타입을 바로 확인할 수 있습니다.- VSCode:
Cmd + Click(Mac) /Ctrl + Click(Windows) - 타입 정의로 바로 이동
타입 에러 디버깅
타입 에러가 발생하면:- 에러 메시지 확인
- 타입 정의 확인
- 백엔드 확인
- 코드 수정
