이 책에 대하여
타입스크립트를 왜 배워야 할까?
- 오류 예방: 컴파일 단계에서 타입 검사 → 실행 단계에서 발생할 수 있는 오류 사전 발견 및 수정 가능
- 코드 가독성과 유지보수성 향상: 타입 명시 → 코드 의미 명확하게 표현
- 협업 효율성 향상: 타입으로 코드의 의도를 명확하게 전달
- 자바스크립트와 호환: 자바스크립트가 사용되는 어떤 곳이든 사용 가능
1장. 들어가며
1.1 웹 개발의 역사
1. 자바스크립트의 탄생
2. 자바스크립트 표준, ECMAScript의
3. 웹사이트에서 웹 애플리케이션으로의 전환
- 웹사이트: 정적인 웹, 단방향 정보 제공, 사용자와 상호 작용 없음, HTML에 링크가 연결된 웹 페이지 모음
- 웹 애플리케이션: 사용자와 상호작용하는 쌍방향 소통의 웹, 검색/댓글/좋아요 등 웹 페이지 내부에서 많은 애플리케이션이 동작함
4. 개발 생태계의 발전
컴포넌트 베이스 개발(Component Based Development, CBD): 재사용할 수 있는 컴포넌트를 개발 또는 조합해서 하나의 애플리케이션을 만드는 개발 방법론
5. 개발자 협업의 필요성 증가
1.2 자바스크립트의 한계
1. 동적 타입 언어
변수에 타입을 명시적으로 지정하지 않고, 코드가 실행되는 런타임에 변숫값이 할당될 때 해당 값의 타입에 따라 변수 타입이 결정되는 것
2. 동적 타이핑 시스템의 한계
숫자 두 개를 인자로 전달받아 합치는 함수에, 숫자 하나만 넘기거나 문자 두 개를 넘겨도 오류없이 정상 작동한다. 즉 개발자의 의도와 다르게 동작하는 것. 이는 동적 타입 언어라는 특성 때문에 이 함수를 호출할 때 사용한 인수 값에 따라 인자의 타입이 결정되기 때문. (JS는 적절한 타입으로 자동 형변환까지 하는 약타입 언어)
3. 한계 극복을 위한 해결 방안
- JSDoc: 모듈, 네임스페이스, 클래스, 메서드, 매개변수 등에 대한 API 문서 생성 도구 (aka 주석)
- propTypes: 리액트에서 컴포넌트 props의 타입을 검사하기 위해 사용하는 속성
- 다트: 구글에서 제시한 타이핑 가능한 새로운 언어
4. 타입스크립트의 등장
마이크로소프트, 자바스크립트의 슈퍼셋 언어인 타입스크립트 공개
| 슈퍼셋: 기존 언어에 새로운 기능과 문법을 추가해서 보완하거나 향상하는 것, 일반적으로 컴파일러 등으로 기존 언어 코드로 변환되어 실행됨
안정성 보장
정적 타이핑: 컴파일 단계에서 타입 검사 -> 런타임 에러 사전 방지
개발 생산성 향상
IDE에서 타입 자동 완성 기능 제공 -> 변수와 함수 타입 추론 가능, 리액트에서 prop 사용부에서 바로 확인 가능
협업에 유리
인터페이스로 코드를 더 쉽게 이해 가능
자바스크립트에 점진적으로 적용 가능
슈퍼셋