TypeScript 핸드북 소개
TypeScript 핸드북 소개
TypeScript를 처음 시작하는 분들께 이 핸드북이 어떻게 구성되어 있고, 어떤 목표로 쓰였는지를 먼저 설명하는 문서예요. JavaScript가 지금처럼 거대한 생태계가 되기까지의 흐름을 짚어보면서, 왜 TypeScript가 필요한지 그 배경부터 정리해 드릴게요.
출처: TypeScript 핸드북
이 핸드북에 대하여
프로그래밍 커뮤니티에 등장한 지 20년이 넘은 JavaScript는 이제 지금까지 만들어진 플랫폼 중에서도 가장 널리 쓰이는 크로스플랫폼 언어 중 하나가 됐어요. 처음에는 웹페이지에 간단한 상호작용을 붙이기 위한 작은 스크립트 언어로 시작했는데, 지금은 규모를 막론하고 프론트엔드와 백엔드 애플리케이션에서 모두 선택되는 언어로 성장했죠. JavaScript로 작성된 프로그램의 크기와 범위, 복잡도는 기하급수적으로 늘었지만, 코드의 서로 다른 단위 사이의 관계를 표현하는 JavaScript 언어의 능력은 그만큼 커지지 않았어요. 여기에 JavaScript 특유의 런타임 동작 방식까지 더해지면서, "언어의 표현력"과 "프로그램의 복잡도" 사이의 괴리가 JavaScript 개발을 규모 있게 다루기 어려운 작업으로 만들었죠.
프로그래머가 저지르는 오류 중 가장 흔한 것을 꼽자면 **타입 오류(type error)**예요. 어떤 종류의 값을 기대하는 곳에 다른 종류의 값을 사용한 경우죠. 이는 단순한 오타일 수도 있고, 라이브러리의 API를 제대로 이해하지 못했거나, 런타임 동작에 대해 잘못된 가정을 한 것일 수도 있어요. TypeScript의 목표는 JavaScript 프로그램을 위한 **정적 타입 체커(static typechecker)**가 되는 거예요. 다시 말해, 코드가 실행되기 전에 (static) 돌아가면서 프로그램의 타입이 올바른지 확인하는 (typechecked) 도구인 셈이죠.
혹시 JavaScript 배경 없이 TypeScript를 첫 언어로 배우려는 분이라면, 먼저 Microsoft Learn의 JavaScript 튜토리얼이나 Mozilla Web Docs의 JavaScript 문서를 읽어보시길 권해요. 다른 언어 경험이 있으신 분이라면 이 핸드북을 읽으면서 JavaScript 문법을 빠르게 익힐 수 있을 거예요.
이 핸드북의 구성
핸드북은 크게 두 부분으로 나뉘어요.
-
핸드북(The Handbook)
TypeScript 핸드북은 일상적인 프로그래머에게 TypeScript를 설명해 주기 위한 포괄적인 문서예요. 왼쪽 내비게이션에서 위에서 아래로 차례로 읽어 나가면 됩니다. 각 장(페이지)을 읽고 나면 해당 개념에 대해 확실한 이해를 얻게 될 거라 기대하세요. 핸드북은 완전한 언어 명세(specification)는 아니지만, 언어의 모든 기능과 동작을 다루는 종합적인 가이드를 지향해요.
전체를 쭉 따라 읽은 독자라면 이 정도는 할 수 있게 됩니다:
- 자주 쓰이는 TypeScript 문법과 패턴을 읽고 이해하기
- 중요한 컴파일러 옵션이 어떤 효과를 내는지 설명하기
- 대부분의 경우 타입 시스템 동작을 정확히 예측하기
명확함과 간결함을 위해, 핵심 내용에서는 다루는 기능의 모든 예외 사례나 사소한 세부까지 파고들지 않아요. 특정 개념에 대한 더 자세한 내용은 reference(참조) 문서에서 찾을 수 있습니다.
-
Reference 파일(참조 문서)
내비게이션에서 핸드북 아래쪽에 있는 reference 섹션은 TypeScript의 특정 부분이 어떻게 동작하는지 더 깊이 이해할 수 있도록 만들어진 곳이에요. 위에서 아래로 읽어도 되지만, 각 섹션은 하나의 개념을 더 심층적으로 설명하는 것을 목표로 하기 때문에 연속성을 염두에 둘 필요는 없습니다.
다루지 않는 것 (Non-Goals)
핸드북은 몇 시간 안에 부담 없이 읽을 수 있는 간결한 문서가 되는 것도 목표예요. 그러다 보니 분량을 짧게 유지하기 위해 특정 주제는 다루지 않습니다.
구체적으로, 핸드북은 함수, 클래스, 클로저 같은 핵심 JavaScript 기초를 온전히 소개하지 않아요. 적절한 곳에서는 그런 개념을 공부할 수 있는 배경 자료 링크를 달아 둡니다.
또한 핸드북은 언어 명세를 대체하는 자리도 아니에요. 어떤 경우에는 최첨단 동작이나 형식적인 설명 대신, 이해하기 쉬운 높은 수준의 설명으로 넘어가기도 합니다. 대신 TypeScript 동작의 여러 측면을 더 정확하고 형식적으로 설명하는 별도의 reference 페이지가 있어요. reference 페이지는 TypeScript에 익숙하지 않은 독자를 대상으로 하지 않으므로, 아직 배우지 않은 고급 용어나 주제가 등장할 수 있어요.
마지막으로 핸드북은 TypeScript가 다른 도구들과 어떻게 상호작용하는지도, 꼭 필요한 경우가 아니라면 다루지 않습니다. webpack, rollup, parcel, react, babel, closure, lerna, rush, bazel, preact, vue, angular, svelte, jquery, yarn, npm 같은 도구와 TypeScript를 함께 설정하는 방법은 범위 밖이에요. 그런 자료는 웹의 다른 곳에서 찾아보시면 됩니다.
시작하기
기본 타입을 시작하기 전에, 다음 소개 페이지 중 하나를 먼저 읽어보길 권해요. 이 소개들은 TypeScript와 여러분이 주로 쓰던 프로그래밍 언어 사이의 핵심적인 유사점과 차이점을 짚어주고, 그 언어 특유의 흔한 오해도 풀어줍니다.
- 새로운 프로그래머를 위한 TypeScript
- JavaScript 프로그래머를 위한 TypeScript
- Java/C# 프로그래머를 위한 TypeScript
- 함수형 프로그래머를 위한 TypeScript
별다른 언어 배경이 없이 바로 시작하고 싶다면, 기본 타입으로 건너뛰세요.