# ts-for-jsdev

## ts-for-jsdev

- [자바스크립트 개발자를 위한 타입스크립트](https://ahnheejong.gitbook.io/ts-for-jsdev/master.md)
- [들어가며](https://ahnheejong.gitbook.io/ts-for-jsdev/intro.md)
- [1.0 들어가며](https://ahnheejong.gitbook.io/ts-for-jsdev/01-introducing-typescript/intro.md): 타입스크립트란 무엇인지 알아보고, 그 역사와 더불어 왜 타입스크립트를 배워야 하는지에 대한 근거를 제시한다.
- [1.1 정적 타입 분석](https://ahnheejong.gitbook.io/ts-for-jsdev/01-introducing-typescript/static-type-analysis.md)
- [1.2 왜 타입스크립트인가](https://ahnheejong.gitbook.io/ts-for-jsdev/01-introducing-typescript/why-typescript.md)
- [1.3 타입스크립트의 구성요소](https://ahnheejong.gitbook.io/ts-for-jsdev/01-introducing-typescript/elements-of-typescript.md)
- [1.4 타입스크립트의 역사](https://ahnheejong.gitbook.io/ts-for-jsdev/01-introducing-typescript/history-of-typescript.md)
- [2.0 ECMAScript](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/intro.md): 타입스크립트의 기반이 되는 언어 ECMAScript 최신 명세에 추가된 여러 유용한 기능들을 살펴본다.
- [2.1 블록 수준 스코프](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/block-level-scope.md)
- [2.1.1 let을 이용한 선언](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/block-level-scope/declaration-using-let.md): let을 이용해 재할당이 가능한 블록 레벨 변수를 선언할 수 있다.
- [2.2.2 const를 이용한 선언](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/block-level-scope/declaration-using-const.md): const를 이용해 재할당이 불가능한 블록 레벨 변수를 선언할 수 있다.
- [2.2.3 스코프 베스트 프랙티스](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/block-level-scope/scope-best-practice.md)
- [2.2 객체와 배열](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/object-and-array.md)
- [2.2.1 비구조화 할당](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/object-and-array/destructuring-assignment.md): 비구조화 할당 문법을 이용해 이전까지 여러 라인에 걸쳐 적어야만 했던 할당을 보다 간결하게 쓸 수 있다.
- [2.2.2 나머지 연산자와 전개 연산자](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/object-and-array/rest-and-spread-operator.md)
- [2.2.3 객체 리터럴 변경사항](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/object-and-array/object-literal-diff.md): 최신 ECMAScript에서의 객체 리터럴 변경사항에 대해 다룬다.
- [2.3 함수](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/function.md): 최신 ECMAScript 명세에서 자바스크립트 함수에 어떤 변경점이 있었는지 알아본다.
- [2.3.1 기본 매개변수](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/function/default-parameter.md): ES6 기본 매개변수 문법을 사용해 매개변수의 기본값을 간결하게 표현할 수 있다.
- [2.3.2 화살표 함수](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/function/arrow-functions.md): 화살표 함수는 자바스크립트 함수 내부에서 this가 야기하는 혼란을 줄여준다.
- [2.4 템플릿 리터럴](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/template-literal.md)
- [2.4.1 멀티라인 문자열](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/template-literal/multiline-string.md): 템플릿 리터럴을 이용해 여러 줄에 걸친 문자열을 손쉽게 표현할 수 있다.
- [2.4.2 문자열 치환](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/template-literal/string-substitution.md): 템플릿 리터럴은 문자열의 일부를 특정 값으로 치환할 수 있는 수단을 제공한다.
- [2.5 원소 순회](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/element-enumeration.md): 최신 ECMAScript 명세에 추가된 원소 순회 수단에 대해 알아본다.
- [2.5.1 forEach 메소드](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/element-enumeration/foreach.md)
- [2.5.2 for-of 문법](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/element-enumeration/for-of.md)
- [2.5.3 이터레이터 프로토콜](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/element-enumeration/iterator-protocol.md)
- [2.5.4 이터러블 프로토콜](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/element-enumeration/iterable-protocol.md)
- [2.6 비동기 처리](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/handling-asynchronous.md)
- [2.6.1 프로미스](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/handling-asynchronous/promises.md)
- [2.6.2 Async / Await](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/handling-asynchronous/async-await.md)
- [2.7 맺으며](https://ahnheejong.gitbook.io/ts-for-jsdev/02-ecmascript/outro.md)
- [3.0 타입스크립트 기초 문법](https://ahnheejong.gitbook.io/ts-for-jsdev/03-basic-grammar/intro.md)
- [3.1 기본 타입](https://ahnheejong.gitbook.io/ts-for-jsdev/03-basic-grammar/primitive-types.md): 타입스크립트가 제공하는 기본 타입을 살펴본다. 이후 다룰 모든 타입은 이 기본 타입들로부터 파생된다.
- [3.2 배열과 튜플](https://ahnheejong.gitbook.io/ts-for-jsdev/03-basic-grammar/array-and-tuple.md): 순서가 있는 원소의 모음(collection)을 나타내는 가장 간단하면서도 유용한 자료구조인 배열, 그리고 그 사촌 튜플을 나타내는 타입에 대해 다룬다.
- [3.3 객체](https://ahnheejong.gitbook.io/ts-for-jsdev/03-basic-grammar/object.md): 자바스크립트에서 가장 일반적이고 널리 사용되는 자료 구조인 객체의 타입에 대해 다룬다.
- [3.4 타입 별칭](https://ahnheejong.gitbook.io/ts-for-jsdev/03-basic-grammar/type-alias.md): 타입 별칭(type alias)을 이용해 이미 존재하는 타입에 다른 이름을 붙여 복잡한 타입을 간단하게 쓸 수 있다. 또한, 프로그래머의 의도를 보다 명확하게 나타낼 수 있다.
- [3.5 함수](https://ahnheejong.gitbook.io/ts-for-jsdev/03-basic-grammar/function.md): 자바스크립트 프로그램에서 가장 핵심적인 역할을 차지하는 함수 타입이 타입스크립트에서 어떻게 표현되는지 다룬다.
- [3.6 제너릭](https://ahnheejong.gitbook.io/ts-for-jsdev/03-basic-grammar/generics.md): 제너릭을 이용해 여러 타입에 대해 동일한 규칙을 갖고 동작하는 타입을 손쉽고 우아하게 정의할 수 있다.
- [3.7 유니온 타입](https://ahnheejong.gitbook.io/ts-for-jsdev/03-basic-grammar/union-type.md): 유니온 타입을 이용해 “여러 경우 중 하나”인 타입을 표현할 수 있다.
- [3.8 인터섹션 타입](https://ahnheejong.gitbook.io/ts-for-jsdev/03-basic-grammar/intersection-type.md): 인터섹션 타입을 이용해 “여러 경우에 모두 해당”하는 타입을 표현할 수 있다.
- [3.9 열거형](https://ahnheejong.gitbook.io/ts-for-jsdev/03-basic-grammar/enums.md): 유한한 경우의 수를 갖는 값의 집합을 표현하기 위해 사용하는 열거형(enum) 타입에 대해 배운다.
- [4.0 들어가며](https://ahnheejong.gitbook.io/ts-for-jsdev/04-interface-and-class/intro.md): 타입스크립트에서 가장 중요하고 자주 쓰이는 두 추상화 수단, 인터페이스와 클래스에 대해 다룬다.
- [4.1 인터페이스 기초](https://ahnheejong.gitbook.io/ts-for-jsdev/04-interface-and-class/interface-basics.md): 인터페이스의 기초적인 개념과 용례를 알아본다.
- [4.2 색인 가능 타입](https://ahnheejong.gitbook.io/ts-for-jsdev/04-interface-and-class/indexable-types.md): 동적인 색인을 표현하는 색인 가능 타입에 대해 다룬다.
- [4.3 인터페이스 확장](https://ahnheejong.gitbook.io/ts-for-jsdev/04-interface-and-class/extending-interfaces.md): 한 인터페이스가 다른 인터페이스를 확장하는 상황에 대해 이야기한다.
- [4.4 클래스](https://ahnheejong.gitbook.io/ts-for-jsdev/04-interface-and-class/classes.md): 객체 지향적 구조화 수단인 클래스에 대해 다룬다.
- [4.5 클래스 확장](https://ahnheejong.gitbook.io/ts-for-jsdev/04-interface-and-class/extending-classes.md)
- [4.6 클래스 심화](https://ahnheejong.gitbook.io/ts-for-jsdev/04-interface-and-class/class-advanced.md)
- [4.6.1 스태틱 멤버](https://ahnheejong.gitbook.io/ts-for-jsdev/04-interface-and-class/class-advanced/static-members.md)
- [4.6.2 접근 제어자](https://ahnheejong.gitbook.io/ts-for-jsdev/04-interface-and-class/class-advanced/access-specifiers.md)
- [4.6.3 접근자](https://ahnheejong.gitbook.io/ts-for-jsdev/04-interface-and-class/class-advanced/accessors.md)
- [4.6.4 추상 클래스](https://ahnheejong.gitbook.io/ts-for-jsdev/04-interface-and-class/class-advanced/abstract-classes.md)
- [4.7 인터페이스와 클래스의 관계](https://ahnheejong.gitbook.io/ts-for-jsdev/04-interface-and-class/connecting-interface-and-class.md): 인터페이스와 클래스가 서로 어떤 방식으로 의존할 수 있는지에 대해 이야기한다.
- [4.8 맺으며](https://ahnheejong.gitbook.io/ts-for-jsdev/04-interface-and-class/outro.md)
- [5.0 들어가며](https://ahnheejong.gitbook.io/ts-for-jsdev/05-type-compatibility/intro.md): 다양한 타입 간의 호환성(compatibility), 보다 구체적으로는 타입 간의 할당 가능성(assignability)에 대해 다루어 본다.
- [5.1 기본 타입의 호환성](https://ahnheejong.gitbook.io/ts-for-jsdev/05-type-compatibility/primitive-types.md): 타입스크립트가 기본 타입 간의 호환성을 판단하는 법에 대해 다룬다.
- [5.2 객체 타입의 호환성](https://ahnheejong.gitbook.io/ts-for-jsdev/05-type-compatibility/objects.md): 타입스크립트가 객체 타입 간의 호환성을 판단하는 법에 대해 다룬다.
- [5.3 함수 타입의 호환성](https://ahnheejong.gitbook.io/ts-for-jsdev/05-type-compatibility/functions.md): 타입스크립트가 함수 타입 간의 호환성을 판단하는 법에 대해 다룬다.
- [5.4 클래스의 호환성](https://ahnheejong.gitbook.io/ts-for-jsdev/05-type-compatibility/classes.md): 타입스크립트가 클래스 간의 호환성을 판단하는 법에 대해 다룬다.
- [5.5 제너릭의 호환성](https://ahnheejong.gitbook.io/ts-for-jsdev/05-type-compatibility/generics.md): 타입스크립트가 제너릭 타입 간의 호환성을 판단하는 법에 대해 다룬다.
- [5.6 열거형의 호환성](https://ahnheejong.gitbook.io/ts-for-jsdev/05-type-compatibility/enums.md): 타입스크립트가 열거형 간의 호환성을 판단하는 법에 대해 다룬다.
- [5.7 맺으며](https://ahnheejong.gitbook.io/ts-for-jsdev/05-type-compatibility/outro.md)
- [6.0 들어가며](https://ahnheejong.gitbook.io/ts-for-jsdev/06-type-system-deepdive/intro.md): 6장에서는 타입스크립트의 타입 시스템에 대해 심도있게 다룬다.
- [6.1 타입 좁히기](https://ahnheejong.gitbook.io/ts-for-jsdev/06-type-system-deepdive/type-narrowing.md): 타입스크립트가 타입을 보다 좁은 타입으로 좁히는 다양한 상황에 대해 알아본다.
- [6.2 타입 추론](https://ahnheejong.gitbook.io/ts-for-jsdev/06-type-system-deepdive/type-inference.md): 컴파일러는 타입 추론을 통해 명시적인 타입 표기 없이도 타입 정보를 이해할 수 있다.
- [6.3 타입 단언](https://ahnheejong.gitbook.io/ts-for-jsdev/06-type-system-deepdive/type-assertion.md): 타입 단언을 통해 컴파일러에게 특정 타입 정보의 사용을 강제할 수 있다.
- [6.4 집합으로서의 타입](https://ahnheejong.gitbook.io/ts-for-jsdev/06-type-system-deepdive/types-as-sets.md): 프로그래밍의 타입이 수학의 집합과 공유하는 성질, 그리고 타입을 집합으로 바라보는 관점에 대해 배운다.
- [6.5 서로소 유니온 타입](https://ahnheejong.gitbook.io/ts-for-jsdev/06-type-system-deepdive/disjoint-union-type.md): 유니온 타입의 특수한 경우인 서로소 유니온 타입의 의미와 쓸모에 대해 다룬다.
- [6.6 맺으며](https://ahnheejong.gitbook.io/ts-for-jsdev/06-type-system-deepdive/outro.md)
- [들어가며 (7월 2일 공개)](https://ahnheejong.gitbook.io/ts-for-jsdev/07-advanced-types/intro.md): 7월 2일 공개 예정.
- [들어가며 (7월 16일 공개)](https://ahnheejong.gitbook.io/ts-for-jsdev/08-modules-and-namespaces/intro.md): 7월 16일 공개 예정.
- [들어가며 (7월 30일 공개)](https://ahnheejong.gitbook.io/ts-for-jsdev/09-real-world-projects/intro.md): 7월 30일 공개 예정.
- [들어가며 (8월 13일 공개)](https://ahnheejong.gitbook.io/ts-for-jsdev/10-libraries/intro.md): 8월 13일 공개 예정.
- [맺으며](https://ahnheejong.gitbook.io/ts-for-jsdev/10-libraries/outro.md)
- [ECMAScript 언어 표준과 TC39](https://ahnheejong.gitbook.io/ts-for-jsdev/appendix-ii-js-ecosystem/ecmascript-tc39.md)
- [TC39 프로세스](https://ahnheejong.gitbook.io/ts-for-jsdev/appendix-ii-js-ecosystem/tc39-process.md)
- [실제 예시 - Array.prototype.includes](https://ahnheejong.gitbook.io/ts-for-jsdev/appendix-ii-js-ecosystem/example-array.prototype.includes.md)
- [타입스크립트와 ECMAScript](https://ahnheejong.gitbook.io/ts-for-jsdev/appendix-ii-js-ecosystem/typescript-and-ecmascript.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information, you can query the documentation dynamically by asking a question.
Perform an HTTP GET request on a page URL with the `ask` query parameter:
```
GET https://ahnheejong.gitbook.io/ts-for-jsdev/master.md?ask=<question>
```
The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.
Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
