01 타입스크립트 소개
02 ECMAScript
03 타입스크립트 기초 문법
04 인터페이스와 클래스
05 타입의 호환성
06 타입 시스템 심화
07 고급 타입
08 모듈과 네임스페이스
09 실제 프로젝트에서 사용하기
10 유용한 라이브러리 소개
부록 II : 자바스크립트 언어 생태계

들어가며

이 페이지를 시작으로, 본문에서는 평어체를 사용합니다.

2012년 말 처음으로 릴리스 된 이후로부터, 타입스크립트는 하루가 다르게 더 큰 인기를 얻으며 또 꾸준히 발전해오고 있다. 그리고 그 성장세는 날이 갈수록 가팔라지고 있다.

2017년 말 진행된 자바스크립트 관련 서베이 “The State of JavaScript 2017” 설문에는 총 28,000여 명이 참여했다. 그 중 단 350명만이 ‘타입스크립트에 대해 들어보지 못 했다’고 답했다. 타입스크립트를 사용해 본 경험이 있는 9,345명 중 약 85%인 7,968명은 ‘다시 사용할 의사가 있다’고 답했으며, 타입스크립트라는 이름을 들어만 본 14,009명 중 약 63%인 8,796명이 ‘배우고 싶다’고 답했다.

이 짤막하지만 인상적인 결과에서 보이듯, 타입스크립트는 사용 해 본 사람과 그렇지 않은 사람 모두에게 인기 있는 기술이다. 특히 사용 경험이 있는 사람 중 대다수가 재사용할 의사가 있다 밝힌 점은 무척 고무적이다. 타입스크립트의 세계에 발을 디디는 데에 이 책이 유용한 안내서가 되길 바란다.

대상 독자

이 책은 타입스크립트 입문서이지만, 프로그래밍 입문서는 아니다.

프로그래밍 경험이 전혀 없는 사람은 이 책의 대상 독자가 아니다. 또한, 자바스크립트를 이용해 프로그램을 짜 본 적이 전혀 없는 사람 역시 이 책의 대상 독자가 아니다. ECMAScript 언어 명세를 속속들이 알 필요까진 없지만, 만약 자바스크립트 기반 프로젝트를 진행해 본 적이 전혀 없다면 먼저 자바스크립트와 익숙해 진 후에 이 책으로 돌아오기를 추천한다.

자바스크립트를 사용한 개발을 하면서 프로젝트가 크고 복잡해짐에 따라 ‘어떻게 하면 더 안정적이고 생산적인 개발이 가능할지’에 대한 고민이 생긴 독자에게 도움이 될 것을 기대하고 썼다. 타입스크립트, 또는 페이스북의 Flow 등에 대해 듣고 흥미를 갖게 되었다면 더할 나위 없겠지만, 자바스크립트에 정적 타이핑을 도입하는 기술들에 대해 전혀 들어본 바가 없어도 무방하다.

책의 목표

이 책은 실용적인 타입스크립트 입문서를 지향한다.

꼭 책의 시작부터 끝까지 순서대로 읽어 내려갈 필요는 없다. 독자의 수준이나 상황에 따라 뛰어넘어도 무방한 부분에 대해서는 따로 명시하는 것을 목표로 한다. 널리 쓰이는 용어는 가급적 그대로 사용하는 것을 기조로 하며, 지나치게 세세한 부분까지 설명하느라 필요 이상으로 장황하게 늘어놓는 일을 지양하려 노력했다.

사족으로 개인적인 바람을 덧붙이자면, 이 책이 기술 서적 중 수명이 긴 편에 속하는 책으로 남기를 바라는 마음으로 썼다. 빠르게 발전하는 기술을 다루는 글은 대부분 기술의 변화와 함께 빠른 속도로 쓸모 없어진다. 그럼에도 다른 맥락, 다른 장소에서도 유용한 지혜를 담은 책들은 독자들의 기억 속에서 오래도록 버티곤 한다.

누군가에게 이 책이 그런 존재로 남는다면 더할 나위 없겠다.

책의 구성

이 책을 완독했을 때, 독자는 다음과 같은 지식을 얻게 될 것이다.

  • 최신 자바스크립트 기능

  • 자바스크립트 언어 표준의 발전 과정

  • 타입스크립트로 실제 프로젝트를 구성하고 배포하는 방법

  • 타입스크립트의 기본 개념 및 문법에 대한 탄탄한 이해

  • 타입스크립트의 타입 시스템에 대한 깊이 있는 이해

  • 타입스크립트 생태계에 대한 이해

앞으로 펼쳐질 책의 구성은 다음과 같다. 책의 진행을 따라가며 자연스레 점차 깊고 넓게 들여다보는 식으로 짜여 있으니, 당장 이 소개가 이해가 가지 않아도 당황하거나 겁먹을 이유는 없다.

먼저 1장부터 4장까지는 타입스크립트의 기초에 대해 소개한다.

  • 1장에선 타입스크립트가 무엇인지 소개한다. 타입스크립트란 무엇인지 알아보고, 그 역사와 더불어 왜 타입스크립트를 배워야 하는지에 대한 근거를 제시한다.

  • 2장에선 타입스크립트의 기반이 되는 언어, 자바스크립트의 최신 명세에 추가된 여러 유용한 기능들을 살펴본다. 타입스크립트를 쌓아올린 기반이 되는 자바스크립트를 더 잘 이해함으로서 더 나은 타입스크립트 프로그래머가 될 수 있다.

  • 3장에선 타입스크립트의 기초적인 문법과 타입 시스템에 대해 소개한다. 3장을 끝낸 시점에서 독자는 간단한 타입스크립트 코드를 읽고 그 의미를 이해할 수 있다.

  • 4장에선 타입스크립트에서 가장 중요하고 자주 쓰이는 두 추상화 수단, 인터페이스와 클래스에 대해 다룬다. 이 둘은 실생활에서 자주 맞닥뜨리게 될 복잡한 자료 구조의 형태를 기술하기 위한 든든한 동반자가 될 것이다.

5장부터 7장까지는 타입스크립트의 타입 시스템, 그리고 보다 복잡한 사용예에 유용한 고급 타입에 대해 다룬다.

  • 5장에선 타입스크립트가 여러 다른 타입 간의 타입 호환성을 어떻게 판단하는지에 대해 살펴본다.

  • 6장에선 타입스크립트의 타입 시스템이 내부적으로 어떻게 동작하는지에 대해 좀 더 깊숙히 들여다본다. 타입 좁히기, 타입 추론 등의 주제를 다룬다.

  • 7장에선 보다 복잡한 문제를 해결할 때에 알아두면 도움이 될 각종 고급 타입에 대해 다룬다. 데코레이터, 매핑된 타입, 조건부 타입 등이 등장한다.

8장에서 10장 까지는 실제로 타입스크립트를 프로젝트에서 사용하기 위해 알아야 할 모듈, 프로젝트 설정법과 유용한 라이브러리에 대해 다룬다.

  • 8장에선 타입스크립트의 모듈, 그리고 네임스페이스에 대해 다룬다. 기본 개념과 함께 모듈 리졸빙이 어떻게 일어나는지, 앰비언트 타입의 의의 등에 대해 이야기한다.

  • 9장에선 실제 프로젝트에 타입스크립트를 도입할 때 알아야 할 프로젝트 초기 설정 및 작업 흐름에 대해 다룬다.

  • 10장에선 마지막으로 타입스크립트와 함께 사용하기 유용한 라이브러리 및 도구를 소개한다.

부록은 아래와 같이 이루어져 있다.

  • <부록 I : 추가적으로 공부할 자료>에선 이 책의 내용을 기반으로, 공부를 더 이어나갈 때에 도움이 될만한 추천 자료를 소개한다.

  • <부록 II에선 자바스크립트 언어 표준>에서 ECMA-262와 그 표준이 발전하는 과정인 TC39 프로세스에 대해 다룬다.

  • <부록 III : Webpack – 자바스크립트 모듈 번들러>에서는 최근 가장 널리 사용되는 자바스크립트 모듈 번들러, 웹팩에 대해 다룬다.

  • <부록 IV : 타입스크립트 모듈 작성하기>에선 타입스크립트 모듈 사용하는 입장이 아니라 만들어 배포하는 입장일 때 필요한 작업들에 대해 간단히 소개한다.

사후 지원

오탈자 제보, 책의 내용에 관련된 질문 등은 깃헙 저장소의 이슈를 생성하시거나, heejongahn@gmail.com으로 메일을 보내주실 것을 부탁드립니다.