TypeScript는 정적 타입을 지원하므로 컴파일 단계에서 잠재적인 버그를 피할 수 있는 장점이 있습니다.
또, 명시적인 정적 타입 지정은 개발자의 의도를 명확하게 기술할 수 있어 코드의 가독성을 높이고, 예측 가능하게 합니다.
이는 곧 프로젝트의 유지보수성의 향상에도 도움이 될 수 있습니다.
게다가 IDE는 이를 분석해 자동완성 기능까지 제공하니 생산성의 향상에도 도움을 줍니다.
TypeScript를 처음 접한다면, 타입을 선언하는 데에 어려움이 다소 존재할 수 있습니다.
컴파일 에러를 피하기 위해 any로 지정하는 경우도 종종 생깁니다.
any는 앞서 말한 TypeScript의 장점을 모두 상쇄합니다. 최대한 쓰지 않으려고 하는 게 중요하겠죠.
타입을 선언하는데에 어려움이 있는 것은 타입 시스템에 대한 이해가 부족하거나, 복잡한 유형의 타입이기 때문일 것입니다.
TypeScript는 Extract, Exclude, Pick, Omit 등 빌트인 유틸리티 타입들이 존재합니다.
이 유틸리티 타입들은 과연 어떻게 추론되는지 알고 계신가요?
이외에도 잘 다듬어진 유틸리티 타입들을 만들어놓은 라이브러리도 존재합니다.
TypeScript를 공부하며, 이런 유틸리티 타입 라이브러리들이 어떻게 작동하는지 내부 코드들을 살펴보는 것은 많은 도움이 될 것입니다.
타입 시스템을 이해해감에 따라 TypeScript의 생산성과 DX는 더욱 좋아질 것입니다.
최근 TypeScript를 십분 활용해 보다 엄격한 타이핑으로 생산성과 DX를 향상시킬 수 있는 고도화된 컴포넌트의 제작방식에 흥미를 느껴 공부하던 중 발견한 프로젝트를 하나 소개합니다.
마치 코딩테스트하는 것처럼 TypeScript 타입을 만들고 적용하며 문제를 푸는 방식입니다.
저도 쉬움까지는 간단히 풀 수 있었지만, 보통 난이도부터는 약간씩 고민하게 되는 부분들이 생기더라고요.
같은 타입을 추론함에도 테스트를 통과하지 못할 때도 있었습니다.
그래서 이 글을 시작으로 챌린지를 진행하며 조금 더 타입 시스템을 이해하고 새로 알게 된 것들을 기록하려 합니다.
이 글을 읽은 여러분 모두 챌린지를 통해 함께 성장할 수 있는 기회가 되었으면 좋겠습니다.
감사합니다.
이 프로젝트는 타입 시스템이 어떻게 작동하는지 이해하고, 자신의 유틸리티를 작성해보거나 챌린지를 재미있게 해 보는 것을 목표로 하고 있습니다. 또한 현업에서 마주하게 되는 질문과 해답을 위한 커뮤니티를 만들기 위한 목적도 있습니다! 이 또한 챌린지의 한 부분이 될 수 있겠죠!
* 아래는 앞서 언급한 유틸리티 타입 라이브러리들의 링크입니다. 이외에도 많은 라이브러리가 있습니다. 소스들을 살펴보는 것만으로도 충분한 공부와 깨달음을 얻을 수 있을 것이라 의심치 않습니다.
'개발 > type-challenges' 카테고리의 다른 글
타입스크립트 타입 정복: Opaque (1) | 2022.08.06 |
---|---|
타입스크립트 타입 정복: Type Guards와 Narrowing (0) | 2022.08.02 |
타입스크립트 타입 정복: Conditional Types (0) | 2022.07.12 |
타입스크립트 타입 정복: 내장 유틸리티 타입을 만들어보자 (0) | 2022.07.02 |
타입스크립트 타입 정복: 준비운동 (0) | 2022.07.01 |