|
프롤로그. 빨간 줄 앞에서 멈추는 사람들
1장. 오류 메시지의 첫 문장 1절. 빨간 줄의 세 가지 신호 2절. 위치보다 먼저 확인할 타입의 방향 3절. TS 코드가 가리키는 문제의 종류 4절. 고치기 전에 지워야 할 세 가지 착각 2장. 타입 추론의 보이지 않는 기준 1절. 값에서 출발하는 타입의 첫 판단 2절. 리터럴 타입과 넓어진 타입의 경계 3절. any와 unknown 사이의 안전거리 4절. 함수 반환값에 남는 추론의 단서 3장. 유니언 타입과 좁히기의 질서 1절. string 또는 number라는 말의 진짜 뜻 2절. 속성 접근 오류의 출발점 3절. 조건문 속 타입 변화 4절. never가 알려 주는 빠진 경우 4장. 함수 타입의 약속과 호출 오류 1절. 매개변수 개수의 계약 2절. 반환값과 void의 경계 3절. 콜백 타입의 숨은 위치 4절. 오버로드 오류의 순서 5장. 객체 타입과 인터페이스의 모양 1절. 필요한 속성과 초과 속성의 차이 2절. 선택 속성의 안전한 사용 3절. 인덱스 시그니처의 허용 범위 4절. interface와 type의 실전 경계 6장. 제네릭 오류의 막힌 문장 1절. 타입 매개변수의 자리 2절. extends 제약의 의미 3절. 기본 타입 인자의 조건 4절. 복잡한 제네릭을 줄이는 기준 7장. null과 undefined의 안전 경계 1절. 값 없음과 값 미정의 차이 2절. strictNullChecks의 실제 효과 3절. 선택 체이닝과 널 병합의 한계 4절. 확신 연산자 뒤의 책임 8장. API 응답 타입의 방어선 1절. 서버 응답과 프런트 타입의 틈 2절. DTO와 화면 모델의 분리 3절. 런타임 검증과 컴파일 검사의 역할 4절. 에러 응답까지 포함한 타입 설계 9장. 배열·튜플·반복문의 타입 오류 1절. 빈 배열에서 시작되는 never 2절. map과 filter 뒤의 타입 변화 3절. 튜플 길이와 순서의 약속 4절. readonly 배열이 막는 수정 오류 10장. 모듈·패키지·설정 파일의 함정 1절. tsconfig가 바꾸는 오류의 세기 2절. include와 exclude의 실제 범위 3절. 모듈 해석과 경로 별칭의 충돌 4절. 라이브러리 타입 파일의 빈자리 11장. 프런트엔드 화면에서 만나는 타입 오류 1절. 이벤트 객체의 좁은 입구 2절. props와 state의 흐름 3절. 비동기 데이터의 비어 있는 첫 화면 4절. 폼 값과 도메인 타입의 간격 12장. 오류를 줄이는 개발 습관의 구조 1절. 빨간 줄을 읽는 순서 2절. 타입을 고치기 전 데이터 확인 3절. 팀에서 공유할 타입 이름 4절. 오류가 줄어드는 프로젝트 리듬 에필로그. 빨간 줄이 줄어드는 사람의 기준 |
|
빨간 줄을 빨리 지우는 습관이 오히려 버그를 오래 남길 수 있다. 검색한 해답대로 any를 붙이고 느낌표를 더하면 에디터는 조용해지지만, 코드가 약속하지 못한 경우는 그대로 숨어 있다. 타입스크립트가 어렵게 느껴지는 까닭은 오류가 많아서가 아니라 오류 메시지의 문장을 읽는 순서를 배우지 못했기 때문이다.
이 책은 실제 타입과 기대 타입을 구분하는 첫 단계에서 출발해 추론, 좁히기, 함수, 객체, 제네릭, null, API, 설정 파일과 화면 코드까지 반복되는 오류의 뼈대를 보여 준다. 수백 개의 코드를 암기시키는 대신 값의 출발점과 도착점을 추적하고, 빨간 줄이 가리키는 약속의 빈칸을 찾게 한다. 오류가 뜰 때마다 임시 처방을 붙이는 개발에서 벗어나고 싶다면 지금 필요한 것은 더 많은 검색 결과가 아니라 해석 기준이다. 한 번 익힌 독해 순서는 새로운 오류에서도 다시 작동한다. 빨간 줄을 두려움이 아닌 설계 신호로 바꾸는 순간, 타입스크립트는 방해물이 아니라 가장 가까운 코드 리뷰어가 된다. |