'이펙티브' 시리즈는 특정 주제에 대한 '두 번째 표준 책'을 지향하고 있습니다. 이전에 자바스크립트와 타입스크립트로 작업해본 경험이 있다면 이 책이 매우 유용할 것입니다.
이 책을 산 건 꽤 오래 전이지만, 당시에는 크게 TS 기반의 작업을 많이 하지고 않았고 오래 하지도 않아서 정말 무슨 소리인지 이해하기도 어려웠고, 이해는 할 수 있었지만 '이게 대체 왜 필요하지?' 이런 생각이어서 얼마 못 읽고 책을 덮었다.
최근에는 TS 기반의 풀스택(Next.js, Nest.js) 개발을 하기도 하고 있고, 주말에 문득 기술 서적을 뭘 읽어볼까 하다가 꺼내든 책인데, 생각보다 테크니컬한 부분에서 재미있게 읽은 책이다.
책 소개
이 책은 위에 써놓은 그대로, 타입스크립트의 중급자를 위한 책이다. 여느 중급자 책이 그렇듯 기초적인 개념은 모두 알고 있다고 가정하고, '패턴'들에 대해서 설명한다. any를 쓰지 말아라, 만약 쓰더라면 어떤 상황에서 쓴다거나, 타입을 선언하는 것과 단언하는 것의 미세한 차이를 포착하면서, 문이 아니라 표현식으로 함수를 정의하는 것이 좀 더 테크니컬하게 타입스크립트의 타입 시스템을 잘 쓸 수 있다와 같은 '패턴'들에 대해서 다룬다.
이 책에서는 각 패턴을 '아이템'이라고 취급하며, 62개의 아이템에 대해서 설명한다. 각 아이템들은 '추론 가능한 타입을 사용해 장황한 코드 방지하기', '다른 타입에는 다른 변수 사용하기' 등의 이름으로 타입스크립트를 잘 활용하는 지침에 대해서 다룬다. 정성스럽게 목차를 써보자면 다음과 같다.
- 타입스크립트 알아보기
- 타입스크립트와 자바스크립트의 관계 이해하기
- 타입스크립트 설정 이해하기
- 코드 생성과 타입이 관계없음을 이해하기
- 구조적 타이핑에 익숙해지기
- any 타입 지양하기
- 타입스크립트의 타입 시스템
- 편집기를 사용하여 타입 시스템 탐색하기
- 타입이 값들의 집합이라고 생각하기
- 타입 공간과 값 공간의 심벌 구분하기
- 타입 단언보다는 타입 선언을 사용하기
- 객체 래퍼 타입 피하기
- 잉여 속성 체크의 한계 인지하기
- 함수 표현식에 타입 적용하기
- 타입과 인터페이스의 차이점 알기
- 타입 연산과 제네릭 사용으로 반복 줄이기
- 동적 데이터에 인덱스 시그니처 사용하기
- number 인덱스 시그니처보다는 Array, 튜플, ArrayLike를 사용하기
- 변경 관련된 오류 방지를 위해 readonly 사용하기
- 매핑된 타입을 사용하여 값을 동기화하기
- 타입 추론
- 추론 가능한 타입을 사용해 장황한 코드 방지하기
- 다른 타입에는 다른 변수 사용하기
- 타입 넓히기
- 타입 좁히기
- 한꺼번에 객체 생성하기
- 일관성 있는 별칭 사용하기
- 비동기 코드에는 콜백 대신 async 함수 사용하기
- 타입 추론에 문맥이 어떻게 사용되는지 이해하기
- 함수형 기법과 라이브러리로 타입 흐름 유지하기
- 타입 설계
- 유효한 상태만 표현하는 타입을 지향하기
- 사용할 때는 너그럽게, 생성할 때는 엄격하게
- 문서에 타입 정보를 쓰지 않기
- 타입 주변에 null 값 배치하기
- 유니온의 인터페이스보다는 인터페이스의 유니온을 사용하기
- string 타입보다 더 구체적인 타입 사용하기
- 부정확한 타입보다는 미완성 타입을 사용하기
- 데이터가 아닌, API와 명세를 보고 타입 만들기
- 해당 분야의 용어로 타입 이름 짓기
- 공식 명칭에는 상표를 붙이기
- Any 다루기
- any 타입은 가능한 좁은 범위에서만 사용하기
- any를 구체적으로 변형해서 사용하기
- 함수 안으로 타입 단언문 감추기
- any의 진화를 이해하기
- 모르는 타입의 값에는 any 대신 unknown을 사용하기
- 몽키 패치보다는 안전한 타입을 사용하기
- 타입 커버리지를 추적하여 타입 안전성 유지하기
- 타업 선언과 @types
- devDependencies에 typescript와 @types 추가하기
- 타입 선언과 관련된 세 가지 버전 이해하기
- 공개 API에 등장하는 모든 타입을 익스포트하기
- API 주석에 TSDoc 사용하기
- 콜백에서 this에 대한 타입 제공하기
- 오버로딩 타입보다는 조건부 타입을 사용하기
- 의존성 분리를 위해 미러 타입을 사용하기
- 테스팅 타입의 함정에 주의하기
- 코드를 작성하고 실행하기
- 타입스크립트 기능보다는 ECMAScript 기능을 사용하기
- 객체를 순회하는 노하우
- DOM 계층 구조 이해하기
- 정보를 감추는 목적으로 private 사용하지 않기
- 소스맵을 사용하여 타입스크립트 디버깅하기
- 타입스크립트로 마이그레이션하기
- 모던 자바스크립트로 작성하기
- 타입스크립트 도입 전에 @ts-check와 JSDoc으로 시험해 보기
- allow.js로 타입스크립트와 자바스크립트 같이 사용하기
- 의존성 관계에 따라 모듈 단위로 전환하기
- 마이그레이션의 완성을 위해 noImplicitAny 설정하기
위와 같다. 쓰면서 각각의 아이템이 말하고자 하는 바들이 스쳐지나간다. 위와 같은 패턴, 이 책에서는 아이템이라고 부르는 것을 하나하나씩 다루며, 제목을 소개하고, TS와 JS에서는 어떠한 일들이 일어나는 지, 그리고 마지막은 요약으로 마무리한다.
예를 들어서 객체 래퍼 타입 피하기라는 아이템에서는 우리가 알고 있는 string 타입의 변수에서 .toChar() 등의 메서드를 쓸 수 있는 것은, 중간에 String이라는 이름의 객체로 래핑이 되기 때문에, 다양한 메서드를 쓸 수 있는 것이고 string 타입의 원시 프로토타입 메서드가 아니다. 이러한 내용에 대해서 이야기를 하기 때문에, 자바스크립트 딥다이브에서 얼핏 봤었던 깊은 JS의 내용까지 한 번 더 리마인드 할 수 있다.
이 책을 읽으면 좋은 대상
타입스크립트를 꽤 사용해본 사람이라면 꼭 읽어볼 것을 권한다. 단순하게 any를 쓰지 말라와 같은 간단한 아이템도 있지만, type과 interface의 차이점에 대해서 자세하게 다루거나, 어떤 상황에서 써야하는지 실전적인 부분을 다루는 부분이 특히 좋다.
type과 interface로 선언된 것을 자바스크립트로 컴파일하게 되면, type의 경우에는 사라지고, interface의 경우에는 남는다는 이론적인 개념에서 더 나아가서, interface의 경우에는 여러 번 선언하게 되면, 선언한 인터페이스의 프로퍼티를 전부 갖게 되고, type의 경우에는 유니온 타입을 쓰는 경우에만 강점을 가진다는 등, 실전에서는 어떤 식으로 쓸 수 있는 지 알 수 있다.
이 외에도 풀스택 개발을 하는 사람이라면, 이 책을 읽어볼만하다. 단순하게 타입스크립트를 어떻게 잘 사용하는 지를 떠나서 후반부에는 DOM이나 NPM 패키지의 의존성에 관련된 부분도 다루기 때문에, JS 생태계에서 전반적인 내용도 알 수 있다.
책의 장점과 아쉬운 점
먼저, 각 아이템의 서두는 다음과 같이 전개된다. 함수 표현식에 타입 적용하기에 대한 아이템을 설명하는 과정에서 위와 같이 자바스크립트에 대한 기본적인 설명과 함께, TS를 보다 잘 다룰 수 있는 방법에 대해서 다룬다.
중급자들을 위한 내용을 담고 있기 때문에, 예제 또한 훌륭하게 다루고 있는 편이다. 매 아이템마다 빠짐없이 예시를 꼭 들고 설명을 하며, 다음과 같이 TS의 좋은 패턴들에 대해서 하나씩 설명을 하고 있다.
이렇게 모든 아이템들이 이해하기 쉬운 도입부와 좋은 예시들, 그리고 마지막에는 내용을 한 번 더 리마인드할 수 있는 요약까지 있다. 굉장히 짜임새 있는 구조를 가지고 60개 가량의 아이템들이 전개되기 때문에, 술술 읽을 수 있고 코드를 자세히 살펴보았다면 머리속에 잘 남는 편이다.
아쉬운 점은 크게 없으나, 코드에서 타입스크립트 에러를 나타내는 부분이 코드와 폰트가 다르지 않아서, 읽는 데 있어 불편했다는 점 정도가 있는 것 같다. 워낙 내용이 너무 좋기 때문에 크게 다른 아쉬운 점은 없었던 것 같다.
총평 및 추천 여부
워낙 아이템들이 많아서, 다 설명하기는 어렵지만 기억나는 것들을 생각해보면 unknown이라는 타입을 사용하는 경우를 설명한다거나, ( any는 어떤 타입이든 올 수 있지만, unknown은 뭔가 타입은 있지만 어떤 타입인지 잘 모를 때 쓴다고 한다, any보다 훨씬 안전 ) 혹은 타입스크립트 특유의 문법이 잘 녹아들게 설계하는 방법을 다룬다.
생각보다 라이트하게 읽을 수 있는 책으로써, 이 책을 읽기 위해 필요한 기초 지식은 타입스크립트를 꽤 써봤다 정도면 충분하기 때문에, 타입스크립트를 메인으로 개발하는 개발자라면 이 책을 읽어보기를 꼭 추천한다.
'후기 > 책' 카테고리의 다른 글
책 리뷰 : 코드로 인프라 관리하기 (5) | 2025.07.20 |
---|---|
책 리뷰 : 카오스 공학 (2) | 2025.06.22 |
책 리뷰 : 소프트웨어 장인 정신 이야기 (1) | 2025.06.03 |
책 리뷰 : 이펙티브 엔지니어 (1) | 2025.06.03 |
책 리뷰 : Go 인 액션 (Go in Action) (6) | 2025.05.29 |