목록 보기
Code generator 개발기 (Part 2)
프론트엔드

Code generator 개발기 (Part 2)

인프런
인프런
2023년 7월 3일

두줄요약

OpenAPI 명세에서 React Query hook, 타입, type guard, schema validator를 생성하는 구조를 소개했습니다. 옵션 기반 확장성과 실제 응답 검증을 위해 IoC, JSON Schema, Ajv를 활용했습니다.

문제 상황

  • OpenAPI 명세 변화에 따른 프런트엔드 타입·API hook·type guard 수동 관리 부담
  • 명세와 실제 API 응답 불일치 및 잘못된 type guard를 런타임까지 발견하지 못하는 위험

구조와 흐름

  • YAML 옵션 검증, OAS 로드, 선택형 전처리, 병렬 Task 실행, 파일 출력의 3단계 파이프라인
  • ReactQueryTask의 타입·hook 생성, TypeGuardTask의 JSON Schema 기반 guard 생성, SchemaValidatorTask의 Ajv standalone validator 생성
  • ConfigLoader와 ConfigProvider로 옵션 파싱·검증 책임 분리

선택 이유

  • inversify 팩토리 기반 Loader·Preprocess 구현체 선택으로 실행 시점 확장성 확보
  • json-schema-to-typescript 기반 인터페이스 생성과 Ajv standalone 기반 백엔드 통합 테스트 지원
  • 전략 패턴과 템플릿 메서드 패턴을 활용한 변경 지점 격리 및 중복 제어

주의할 점

  • 구조적 타입 시스템에서 응답 변경 후 type guard 갱신 누락 시 컴파일 단계 탐지 한계
  • 자동 생성 type guard 기능의 지속적 dogfooding 필요
  • 템플릿 메서드 상속 깊이를 한 단계로 제한

다음 읽기

#TypeScript 주제를 이어서 읽기

Code generator 개발기 (Part 1)

REST API와 TypeScript 타입을 수동 관리하며 생긴 불일치 문제를 분석했습니다. 기존 도구의 한계를 검토하고 OpenAPI 기반 생성기 목표를 정리했습니다.

인프런
인프런
프론트엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...