제목 : 핵심만 담은 타입스크립트 찍어먹기
지은이 : 김모건, 김소리, 김소희, 김지윤, 서동주, 서주예, 이하연, 장수연, 장성우, 조병민, 황시하
편 집 : 김모건, 김소리, 김소희, 김지윤, 서동주, 서주예, 이하연, 장수연, 장성우, 조병민, 황시하
총 괄 : 조병민
표지디자인 : 박재웅
펴낸곳 : 사도출판
ISBN : 979-11-88786-96-1
초판 1쇄 발행 : 2024. 03. 29
📕 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 전역 상태 공유
