피드로 돌아가기
Building a Rock-Paper-Scissors CLI with TypeScript — Union Types, Conditionals, and Jest
Dev.toDev.to
Backend

Union Types와 Jest 기반의 9가지 엣지케이스 전수 검증을 통한 CLI 게임 설계

Building a Rock-Paper-Scissors CLI with TypeScript — Union Types, Conditionals, and Jest

Uya2026년 5월 25일11beginner

Context

Java 개발자의 TypeScript 전환 과정에서 정적 타이핑을 통한 런타임 에러 방지 필요성 대두. 단순 기능 구현을 넘어 타입 시스템을 활용한 도메인 모델링과 테스트 자동화 구조 설계에 집중함.

Technical Solution

  • Debugging 효율성 향상을 위해 Enum 대신 String 기반 Union Types를 채택하여 로그 가독성 확보
  • 상호 배타적 조건의 명확한 의도 전달을 위해 if-else if 구조를 도입하여 로직 평가 최적화
  • Array Index 기반의 무작위 선택 시 Type Assertion(as Hand)을 적용하여 컴파일러 수준의 타입 안전성 확보
  • readline 모듈을 통한 인터페이스 분리와 game.ts 로직 분리를 통한 관심사 분리(SoC) 구현
  • 3x3 행렬의 모든 경우의 수를 커버하는 Jest Unit Test 세트를 구성하여 로직의 완전성 검증

- 단순 값 집합 정의 시 런타임 가독성이 중요하다면 Enum보다 Union Types 검토 - 배타적 조건문 작성 시 return 문이 있더라도 else if를 사용하여 비즈니스 의도를 명시 - 무작위 데이터 추출 시 경계 값 검증 후 Type Assertion을 사용하여 타입 불일치 해결 - 도메인 로직 검증 시 가능한 모든 조합(Combination)을 테스트 케이스로 작성하는 습관 체득

원문 읽기