Skip to main content
Sonamu가 API 변경을 컴파일 타임에 감지하여 런타임 에러를 사전에 방지하는 방법을 알아봅니다.

컴파일 타임 에러 개요

즉시 감지

API 변경 시 컴파일 타임 에러

런타임 안전

배포 전 발견 프로덕션 안정성

IDE 통합

빨간 밑줄 즉각적인 피드백

리팩터링 안전

대규모 변경 영향 범위 파악

컴파일 타임 에러란?

문제: 런타임에만 발견되는 에러

전통적인 개발에서는 API 변경이 런타임에서만 발견됩니다.
런타임 에러의 문제점:
  1. 프로덕션에서 발생: 사용자가 직접 경험
  2. 발견 지연: QA나 사용자 리포트로만 발견
  3. 디버깅 어려움: 어디서 문제가 발생했는지 추적 필요
  4. 신뢰도 하락: 서비스 안정성 저하

해결: 컴파일 타임 에러

Sonamu는 API 변경을 컴파일 타임에 즉시 감지합니다.
컴파일 타임 에러의 장점:
  1. 즉시 발견: 코드 작성 중 IDE에서 즉시 표시
  2. 배포 전 수정: 프로덕션 배포 전에 모든 문제 해결
  3. 영향 범위 파악: 변경이 영향을 주는 모든 곳 확인
  4. 자동 리팩터링: IDE의 Rename 기능 활용

에러 감지 시나리오

1. 필드명 변경

IDE 에러 메시지:

2. 필드 타입 변경

IDE 에러 메시지:

3. 필수/옵셔널 변경

IDE 에러 메시지:
수정:

4. 필드 삭제

5. 파라미터 변경

IDE 에러 메시지:

6. 반환 타입 변경

수정:

리팩터링 지원

대규모 변경도 안전

API 변경이 영향을 주는 모든 위치를 즉시 파악할 수 있습니다.
pnpm generate 실행 후: IDE에서 모든 에러 위치가 표시됩니다:
수정 과정:
  1. IDE의 “Problems” 패널에서 모든 에러 확인
  2. 각 위치를 방문하여 새로운 구조에 맞게 수정
  3. 모든 에러가 해결되면 컴파일 성공
  4. 안전하게 배포

IDE의 자동 리팩터링 활용

TypeScript의 강력한 리팩터링 기능을 활용할 수 있습니다. 예시: 필드명 일괄 변경
  1. Service 파일에서 타입 확인
  2. 필드명에 커서 위치
  3. F2 (Rename Symbol) 또는 우클릭 → Rename
  4. 새 이름 입력
  5. 모든 사용처가 자동으로 변경됨

실전 워크플로우

1. 백엔드 API 변경

2. Service 재생성

출력:

3. TypeScript 컴파일

출력 (에러 발생):

4. 에러 수정

5. 재검증

출력 (성공):

6. 안전하게 배포

모든 타입 에러가 해결되었으므로 안전하게 배포할 수 있습니다.

CI/CD 통합

TypeScript 체크를 CI에 추가

이점:
  • Pull Request에서 타입 에러 자동 감지
  • 타입 에러가 있으면 머지 차단
  • 팀 전체의 코드 품질 보장

베스트 프랙티스

1. 정기적인 Service 재생성

2. Pre-commit Hook 설정

타입 에러가 있으면 커밋 차단됩니다.

3. VSCode 설정

4. 타입 에러 무시하지 않기

@ts-ignore절대 사용하지 마세요. 타입 에러는 실제 문제를 나타냅니다.

에러 메시지 이해하기

자주 보는 에러 메시지

1. Property does not exist
→ 필드가 삭제되었거나 이름이 변경됨 2. Type is not assignable
→ 타입이 변경됨 3. Object is possibly undefined
→ 필수에서 옵셔널로 변경됨 4. Cannot find name
→ Service가 재생성되지 않았거나 import 누락 5. Expected N arguments, but got M
→ API 파라미터가 추가/삭제됨

주의사항

컴파일 타임 에러 처리 시 주의사항: 1. pnpm generate 필수: API 변경 후 반드시 실행 2. @ts-ignore 금지: 타입 에러를 무시하지 말 것 3. any 타입 금지: 타입 안전성이 깨짐 4. 모든 에러 수정: 하나라도 남기면 런타임 에러 가능 5. CI/CD 통합: 자동 타입 체크 설정

다음 단계

API 타입 추론

타입 추론 이해

공유 타입

타입 파일 구조

Service 사용하기

Service 활용법

테스팅

테스트 작성