ts-pattern은 더 멋진 if문이 아니다
toss.tech
"simple is the best"
라는 말을은 단순함이 가진 힘을 잘 대변합니다. 개발 역시도, 불필요한 복잡성을 제거하고 본질에 집중하는 것이야말로 좋은 코드의 시작이라고 생각하는데요. 이런 맥락에서 "ts-pattern은 더 멋진 if문이 아니다"라는 토스에서 발행한 아티클을 재미있게 읽었습니다. 새로운 도구를 도입하기 전에 그것을 정말 필요로 하는지, 더 단순한 해결책은 없는지 생각하게 만드는 글이었기 때문인데요.
ts-pattern
은 타입스크립트 기반의 패턴 매칭(pattern matching) 라이브러리입니다. 패턴 매칭을 통해 복잡한 조건부 분기를 더 간결하고 선언적으로 작성할 수 있습니다.
복잡한 조건문이나 분기 로직에 타입 체크가 필요한 상황에서는 유용할 수 있습니다.
import { match } from 'ts-pattern';
match(choice)
.with('가위', () => <div>✌️ 가위를 선택하셨습니다!</div>)
.with('바위', () => <div>✊ 바위를 선택하셨습니다!</div>)
.with('보', () => <div>🖐 보를 선택하셨습니다!</div>)
.exhaustive()
하지만 저자는 "ts-pattern을 사용해야 할 만큼 복잡한 분기가 자주 필요한가?"라는 의문을 제기합니다. 복잡한 분기문이 발생하는 상황에서 "오히려 코드를 더 간결하게 만들 수 있는 방법을 고민하는 것"이 본질적인 해결책이 아닌가 하는 생각을 던지죠.
복잡한 분기는 if/else, switch
또는 early return
패턴을 사용하고, 타입스크립트의 satisfies
키워드를 사용하여 타입이 특정 조건을 만족하는지 확인할 수 있습니다. 또한 ts-pattern의 match 인터페이스와 체이닝을 쓰는 대신, TypeScript 기존 조건 분기문에 IIFE 함수를 통한 선언적인 코드를 활용하거나 별도의 SwitchCase 컴포넌트를 만들어 활용하는 것을 추천합니다. 이런 식으로도 타입 안전성을 유지하면서도, 선언적인 방식으로 코드를 작성할 수 있기 때문이죠.
라이브러리가 쏟아져 나오는 시기에 좀 더 간결하고 본질적으로 단순한 방법을 고민하는 아티클이라 인상 깊었는데요. 언제나 유연한 사고를 통해서 도구에 의존하기보다는 본질적인 문제 해결 방식을 고민하고 탐구하는 자세가 중요한 것 같습니다.
https://toss.tech/article/ts-pattern-usage
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 11월 9일 오전 1:57