본문으로 이동
ts-pattern은 더 멋진 if문이 아니다
문서

ts-pattern은 더 멋진 if문이 아니다

허민 · 토스 · 토스 기술 블로그

원본 보기

소개

ts-pattern 라이브러리는 패턴 매칭을 기반으로 하고 있으며, 복잡한 조건부 분기를 간결하게 작성할 수 있게 도와줘요. 하지만 성능이 비교적 떨어지기 때문에 실제로 ts-pattern을 어떻게 사용하고 있는지 확인할 필요가 있습니다.

AI 핵심 요약

복잡한 조건 분기에서 타입 누락으로 버그가 생기는 문제를 줄이기 위해 ts-pattern을 사용했지만, 실제 코드에서는 단순한 분기에도 적용돼 오버엔지니어링이 될 수 있음을 발견했습니다. ts-pattern은 `exhaustive()`로 모든 케이스를 타입 검사할 수 있지만, 클래스와 함수 체이닝을 사용하는 구현 특성상 기본 `if/else`나 `switch`보다 성능이 낮을 수 있습니다. 글은 단순한 로직에는 early return이나 `switch`와 `never` 검증을, JSX에는 IIFE나 `SwitchCase`를 대안으로 제시합니다. 도구를 일괄 적용하기보다 분기의 복잡도와 성능 요구를 따져 적절한 방식을 선택하는 것이 핵심입니다.

  • 분기 로직이 단순하다면 early return이나 switch로 조건을 명확히 표현하세요.
  • 유니온 타입의 누락된 케이스는 `never` 검증으로 컴파일 단계에서 확인할 수 있습니다.
  • JSX에서 선언적 분기가 필요하면 IIFE나 `SwitchCase` 같은 대안을 고려할 수 있습니다.
  • 성능이 중요한 경로에서는 라이브러리 도입 전 실제 사용 패턴과 벤치마크를 확인하세요.