📝

목차

1장 타입스크립트란?

1.1 자바스크립트의 한계

1.2 타입스크립트란?

1.2.1 타입 시스템

1.3 타입 추론

1.3.1 동적으로 추론 가능한 타입
1.3.2 동적으로 추론 불가능한 타입

1.4 타입스크립트 환경 설정

1.4.1 Node.js 설치하기
1.4.2 타입스크립트 설치하기
1.4.3 타입스크립트 사용해보기
1.4.4 타입스크립트 컴파일러 환경설정 tsconfig.json 세팅
 

2장 타입스크립트 기본 타입

2.1 기본타입 (Primitive Type)

2.1.1 타입 주석 (Type Annotation)
2.1.2 number
2.1.3 string
2.1.4 boolean
2.1.5 null
2.1.6 undefined

2.2 독자적 타입

2.2.1 any
2.2.2 unknown
2.2.3 void
2.2.4 never
2.2.5 enum 타입 (Enumerable Type)
2.2.6 리터럴 타입

2.3 기본적인 타입 조합

2.3.1 유니온 타입
2.3.2 템플릿 리터럴 타입

2.4 타입 계층 이해하기

2.4.1 타입을 집합으로 바라보기
2.4.2 타입 호환성
2.4.3 any 타입과 unknown 타입

3장 배열 타입

3.1 기본 배열

3.1.1 배열의 타입
3.1.2 배열의 선언과 초기화
3.1.3 Readonly

3.2 튜플 타입

3.2.1 튜플의 선언과 할당
3.2.2 튜플의 구조 분해 할당
3.2.3 튜플의 변경
3.2.4 튜플 타입의 선택적 속성
3.2.5 튜플과 rest 연산자
3.2.6 읽기 전용 튜플

3.3 다차원 배열 타입

3.3.1 다차원 배열의 선언과 초기화
3.3.2 다차원 배열에서 여러 타입 사용
3.3.3 다차원 튜플
 

4장 객체 타입

4.1 타입스크립트의 객체 타입

4.1.1 객체 리터럴 선언
4.1.2 명시적 선언

4.2 타입 별칭으로 객체 타입 정의

4.2.1 기본 정의 방법
4.2.2 교차 타입

4.3 인터페이스로 객체 타입 정의

4.3.1 기본 정의 방법
4.3.2 인터페이스 확장하기/합치기

4.4 구조적 타이핑

4.4.1 명목적 타이핑
4.4.2 구조적 타이핑

4.5 타입 별칭과 인터페이스의 차이점

4.5.1 선언 병합
4.5.2 확장과 유연성
4.5.3 클래스 구현

4.6 객체 타입의 호환성

4.6.1 객체 타입의 호환성
4.6.2 초과 프로퍼티 검사
 

5장 함수

5.1 함수의 선언과 호출 방법

5.1.1 함수의 선언
5.1.2 함수의 매개변수
5.1.3 함수의 반환 값

5.2 함수의 this 타입

5.2.1 명시적 this 타입
5.2.2 암시적 this 타입

5.3 오버로딩

5.3.1 오버로드 시그니처
5.3.2 구현 시그니처
5.3.3 예시

5.4 함수 타입의 호환성

5.4.1 타입의 공변성과 반공변성, 이변성
5.4.2 반환값의 타입에 따른 호환성
5.4.3 매개변수의 타입에 따른 호환성
 

6장 클래스

6.1 타입스크립트에서 클래스 사용하기

6.1.1 클래스란?
6.1.2 클래스 정의
6.1.3 생성자
6.1.4 Getter & Setter
6.1.5 상속
6.1.6 접근 제어자

6.2 인터페이스와 클래스

6.2.1 인터페이스를 클래스에 활용하기
 

7장 제네릭 타입

7.1 기본 타입 정의

7.1.1 제네릭이란?

7.2 콜백 함수에서의 제네릭

7.2.1 타입스크립트의 콜백 함수
7.2.2 콜백 함수에 제네릭 적용
7.2.3 다양한 타입의 제네릭 콜백 함수
7.2.4 제네릭 콜백 함수를 통한 API 호출

7.3 인터페이스와 타입 별칭에서의 제네릭

7.3.1 제네릭 인터페이스
7.3.2 제네릭 타입 별칭
7.3.3 제네릭 인터페이스 활용

7.4 클래스에서의 제네릭

7.4.1 원시 타입 변수
7.4.2 참조 타입 변수
7.4.3 제네릭 클래스의 extends

7.5 프로미스에서의 제네릭

7.5.1 프로미스
7.5.2 프로미스의 타입
7.5.3 프로미스 타입의 추론
7.5.4 프로미스 객체의 타입 정의
7.5.5 프로미스 객체를 반환하는 함수의 타입 정의

7.6 제약 조건 (Constraints)

7.6.1 제네릭의 제약 조건
7.6.2 제약 조건의 다른 예제
 

8장 타입 말해주기

8.1 타입 단언 (Type Assertion)

8.1.1 타입 단언이란?
8.1.2 타입 단언 규칙
8.1.3 const 단언
8.1.4 Non-Null 단언
8.1.5 다중 단언
8.1.6 타입 단언의 사용 목적과 주의할 점

8.2 타입 가드 (Type Guard)

8.2.1 타입 가드란?
8.2.2 타입 가드 적용 방법
 

9장 타입 조작

9.1 인덱스 시그니처 (Index Signature)

9.1.1 인덱스 시그니처란?
9.1.2 인덱스 시그니처의 허용 타입
9.1.3 인덱스 시그니처의 확장
9.1.4 인덱스 시그니처의 readonly

9.2 인덱스드 액세스

9.2.1 객체 예시
9.2.2 배열 예시
9.2.3 튜플 예시

9.3 Mapped Types

9.3.1 자바스크립트의 map 함수
9.3.2 Mapped Types 기본 문법
9.3.3 Mapped Types 응용

9.4 keyof 연산자

 

10장 조건부 타입

10.1 기본 사용 방법

10.1.1 제네릭 조건부 타입

10.2 분산적인 조건부 타입

10.3 infer로 타입 추론하기

 

11장 유틸리티 타입

11.1 유틸리티 타입의 개념

11.2 Partial, Required, Readonly

11.2.1 Partial
11.2.2 Required
11.2.3 Readonly

11.3 Pick, Omit, Record

11.3.1 Pick
11.3.2 Omit
11.3.3 Record

11.4 Exclude, Extract, ReturnType

11.4.1 Exclude<T, U>
11.4.2 Extract<T, U>
11.4.3 ReturnType<T>
 

12장 리액트 with 타입스크립트

12.1 프로젝트 세팅하기

12.1.1 새로운 리액트 프로젝트 생성
12.1.2 기존 리액트 프로젝트에 타입스크립트 마이그레이션

12.2 State

12.2.1 useState 훅
12.2.2 HTMLElement 타입
12.2.3 useState에 타입스크립트 적용하기

12.3 컴포넌트와 props

12.3.1 리액트 컴포넌트의 props
12.3.2 리액트 컴포넌트 타입
12.3.3 props의 타입 지정

12.4 이벤트

12.5 Styled-Components

12.5.1 설치 방법
12.5.2 사용 방법

12.6 Context API

12.6.1 TodoContext 생성
12.6.2 provider 설정
12.6.3 전역 상태 공유