‘Mastering TypeScript 2e’를 읽고

Nathan Rozentals | Packt Publishing (교보문고)


들어가기 앞서

  • 왜 원서를 주문했나요? 원서가 더 비싼데..
    • 연구실 돈으로 주문한 책입니다ㅎ (탕진잼ㅎ)
    • 제가 좀 사대주의가 있어서..
  • 그럼 자비로 구매하는 상황이라면?
    • 아예 구매를 안 했을 것 같네요.
    • 워낙에 MS 공식 문서가 괜찮게 되어있어서.
  • 이 책을 제 돈 주고 살 가치가 있을까요?
    • 원서는 적극 비추합니다. 특히 종이책은 55,000원이라는 무식한 가격에 판매되고 있습니다. E-book은 훨씬 사정이 나아져서 17,100원 이라는 합리적인 가격에 살 수 있지만, E-book으로 보느니 MS 공식 도큐 보세요.
    • 그럼에도 불구하고 반드시 번역된 자료가 필요하다면 에이콘 출판사에서 번역한 책 (36,000원) 이 있으니 참고하시길. (교보문고)
  • 용어 정리
    • angular.js: JavaScript로 구현된 1버전
    • Angular: TypeScript로 구현된 2+버전

이 책은 2015년 4월에 처음 출판되고 2017년 2월에 2판이 나온 책이다. 책의 내용 중에는 요즘 트렌드에 따라오지 못하는 구시대적인 라이브러리나 프레임워크를 소개하는 부분도 있었다. (e.g. Grunt, Bower, angular.js, …)

14개의 Chapter 별로 100점 만점 기준의 점수와 짤막한 이유를 달아봤다.

  1. TypeScript – Tools and Framework Options 30점
    요즘 JS가 얼마나 잘 나가는지, JS의 약점이 뭔지, TS의 강점이 뭔지 설명한다. 어떤 IDE를 쓰면 좋은지 설명하면서 VSCode를 언급하는 것을 보면 기분이 좋아진다. 제발 한국인이라면 VSCode 씁시다! 물론, 내용적인 면에서 도움이 되는 챕터는 아니었다.
  2. Types, Variables, and Function Techniques 50점
    예전에 MS 공식 도큐를 읽을 때 대충 지나가서 몰랐던 const enum을 새로이 알게 됐다. 그 외에는 평이한 TS 문법 설명. 한 가지 아쉬운 점이 있다면, Explicit Casting에서 <any> prefix로 어떤 변수를 any 로 Casting할 수 있다고 설명하는데, 이 외에도 someVariable as any 와 같은 새로운 문법을 최신 TypeScript에서 지원한다.
  3. Interfaces, Classes, Inheritance 45점
    평이한 TS 문법 설명. Packt Publishing의 책을 좀 많이 읽어봐서 느끼는건데, 얘네는 진짜 심심하면 Design Pattern 을 꼭 넣는다. 쓸 데 없이 Factory 패턴을 넣어서 5점 감점함. Chapter2, 3에서 다루는 문법은 다른 언어에서도 쉽게 확인할 수 있는 문법들이라 대충 넘어가도 될 듯. 아, TS가 Duck-Typing을 한다는 것만 알아두면 될 듯.
  4. Decorators, Generics, and Asynchronous Features 55점
    평이한  TS 문법 설명. Java의 Annotation이 TS의 Decorator와 매우 유사하다. Generic도 뭐 다른 언어에서 Generic, Template등으로 부르는 바로 그 기능. 비동기 파트에서 async, await을 다뤄서 5점 추가.
  5. Writing and Using Declaration Files 50점
    평이한 TS 문법 설명. 대부분의 라이브러리는 definitely typed에서 타입 파일들을 이미 작성해놓았고, 이미 작성한 JS 코드에 대해 타입 정보를 추가하고 싶다면 이 chapter를 확인하면 된다. 하지만, 이미 작성한 JS 코드가 Library라기보다 Application에 가깝다면, flow-type을 사용하는 것이 훨씬 낫다고 생각하니 참고하길.
  6. Third-Party Libraries 20점
    트렌드를 못 따라가는 대표적인 파트. Angular.js, Bower등을 소개한다.
  7. TypeScript Compatible Frameworks 10점
    내용의 질은 무난하다. 하지만 과연 이 내용이 한 챕터를 잡아먹을 정도로 중요한 내용인가에 대해서는 의문. 챕터가 13개면 서양인 관점에서 불안하니까 하나 끼워넣어볼까 해서 넣은게 아닌가 싶을 정도로 무익한 챕터라고 생각. TypeScript를 설명하는 책에서 굳이 이정도로 다른 프레임워크를 설명할 필요가 과연 있었을까.. Angular가 대표적인 타입스크립트 기반 프레임워크니 설명하기 위해 겸사겸사 다른 프레임워크들도 소개하는 느낌.
  8. Test Driven Development 40점
    평이한 TS 테스트 설명. 책에서는 Jasmine을 예제로 설명하는데 이와 아주 비슷한 문법으로 Zero-Configuration & Fast Speed를 표방하는 Jest를 더 추천. 이 책이 나올 당시에 TypeScript를 뿌리부터 지원하는 프레임워크는 Angular가 거의 유일했을 것이고, 당시 angular.js / Angular진영에서 밀던 것이 Protractor였기에 겸사겸사 여기서도 설명하는 느낌.개인적으로 E2E 테스트는 nightwatch.js 를 선호한다.
  9. Testing TypeScript Compatible Frameworks 5점
    7장의 망령이 여기서 다시 한 번 등장한다. 왜 굳이 이걸 이 책에서 설명해야하냐고.
  10. Modularizaion 20점
    Webpack을 쓰는게 낫지 않을까. AMD와 SystemJS 등을 설명하는데 설명 퀄리티는 무난. 라이브러리를 짜고 있다면 Rollup이 더 나을 것 같기도하고. 물론, 7장에서 React 코드를 짜면서 Webpack을 소개하긴 하지만… 왜 여기서는…
  11. Object-Oriented Programming 5점
    응 너도 여기서 나오는거 아니야. SOLID 원칙까지는 그러려니 하는데, UI Design과 State, Mediator 패턴이 등장한다. 아 정말 싫다. Packt Publishing.
  12. Dependency Injection 90점
    책의존재이유.
    DI 패턴중에하나아닌가요? 책에패턴나오는걸극혐하시는분이이걸.. 점수를..
    내 생각에 JS와 대비되는 TS의 Main Feature가 바로 Decorator라고 생각하며, DI가 나오기 전에 원래는 어떤 패턴이 있었는지, 그리고 그 패턴의 단점이 무엇이었는지, 그래서 DI가 그 패턴의 단점을 어떻게 해결하고 있는지를 예제 코드와 함께 설명하고 있다. 아, 이래서 Angular에서 이런 방법으로 Decorator들을 붙여줘서, DI를 이렇게 구현했겠구나 하는 깨달음을 얻음.
  13. Building Applications 5점
    7장의 망령이 두 번째 등장한다.
    웹사이트 만드는 걸 도대체 왜 TS 문법책에서 왜 다루냐고 왜!
  14. Let’s Get Our Hands Dirty 5점
    이제놀랍지도않게, 이 책의 마지막 챕터 또한 7장의 망령으로 끝난다. Angular로 만든 project에 대해 어떻게 테스트를 짜고. CI를 돌리고..

  • 총점: 1.5 / 5.0
  • 총평: TS에 대해 대부분의 지식이 없는 사람을 위한 책. Mastering이라는 단어에서 뭔가 전문가를 위한 타입스크립트 서적이라고 느꼈지만 그냥 마케팅 용어였다. 중간에 DI 부분 말고는 내게 도움되는 부분이 없었던 것 같다. 불필요한 내용이 너무 많이 들어가있다. 연구실 돈으로사서 정말 다행이다. 그래도, MS 공식도큐 한 번 더 읽는 지루한 작업보다는 새로운 문장으로 씌여진 새로운 책으로 읽어서 복습에 도움이 된 듯. 그래서 +0.5점!

 

Leave a Reply