TypeScript Branded Types로 런타임 타입 안정성 개선하기
Medium
타입스크립트의 Branded Types
에 대해 알고 계셨나요? Branded Type
이란 타입스크립트 커뮤니티에서 개발된 일종의 안전성 패턴 인데요. 이 패턴은 기존 타입 시스템을 활용하여 더 구체적이고 안전한 타입을 만드는 방법 입니다. 이 기법은 기존 타입에 고유한 식별자를 추가하여 더 구체적이고 안전한 새로운 데이터 타입을 생성하는데요. 쉽게 말해 원시 타입(string, number)에 추가적인 타입 정보를 ‘브랜딩’하는 기법입니다.
구현 예시:
type Brand<K, T> = K & { __brand: T }
type UserID = Brand<string, "UserId">
type PostID = Brand<string, "PostId">
위 예시에서 UserID
와 PostID
는 string
타입이지만 Brand
타입으로 인해 컴파일러 수준에서 구별 됩니다.
이렇게 동일한 string
타입이더라도 구별이 가능해지면 함수 인자 순서를 잘못 전달했을때 기존 타입스크립트는 동일한 string
이기 때문에 에러를 감지하지 못했지만 Brand 타입은 에러를 잡아낼 수 있습니다.
따라서 Branded Types
을 통해서 도메인 모델링, 유효성검사, API응답 요청 등에서 더 표현력 높고, 안정성 높은 코드를 작성할 수 있습니다.
추가로unique symbol
을 활용한 더 강력한 패턴 및 다양한 활용사례를 확인하고 싶으시면 블로그를 참고해보세요.
https://siosio3103.medium.com/typescript-branded-types로-런타임-타입-안정성-개선하기-768222c8df0d
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 9월 20일 오전 1:09
십
... 더 보기기본기 확실히 하기
나는 종종 생산성을 올리기 위한 각종 개발 툴은 물론, 라이브러리나 소스 코드를 구매하기도 한다.
소스 코드의 경우 실제로 써먹지 못하는 경우도 상당수 되긴 하지만, 그래도 구성이나 코드를 보면서 배우는게 있기 때문에 학습 비용이라고 생각하고 가끔 구매하는 편이다.
좋
... 더 보기어떤 서비스가 버그를 가진채로 출시되었고, 사용자들이 그 버그를 전제로 기능을 사용하고 있다면, 그리고 그 위로 너무 많은 새로운 기능들이 쌓여있다면 그건 버그가 아니라 스펙(기능)이라는, 언젠가부터 들었던 업계의 유명한 블랙 유머다.
... 더 보기