1장 자바스크립트에서 타입스크립트로
1.1 자바스크립트의 역사
1995년 넷스케이프의 브렌 던 아이크는 웹사이트에 쉽게 접근하고 사용할 수 있는 자바스크립트를 10일 만에 설계했다.
1.2 바닐라 자바스크립트의 함정
바닐라 자바스크립트의 함정은 프로젝트 규모가 커지고 장기화될수록 더욱 드러난다.
1.2.1 값 비싼 자유
자바스크립트는 코드를 구성하는 방법에 제한이 없다.
다른 언어는 컴파일러가 충돌할 수 있다고 판단하면 코드 실행을 거부할 수 있다. 하지만 자바스크립트처럼 충돌 가능성을 먼저 확인하지 않고 코드를 실행하는 동적 타입 언어는 그렇지 않다.
1.2.2 부족한 문서
JSDoc에는 다음과 같은 주요 문제로 인해 규모가 있는 코드베이스에서 사용하기 불편하다.
- JSDoc 설명이 코드가 잘못되는 것을 막을 수 없다.
- JSDoc 설명이 이전에는 정확했더라도 코드 리팩터링 중에 생긴 변경 사항과 관련된 현재 유효하지 않은 JSDoc 주석을 모두 찾기란 어렵다.
- 복잡한 객체를 설명할 때는 다루기 어렵고 장황해서 타입과 그 관계를 정의하려면 다수의 독립형 주석이 필요하다.
1.2.3 부족한 개발자 도구
자바스크립트는 타입을 식별하는 내장된 방법을 제공하지 않고 코드가 JSDoc 주석에서 쉽게 분리되기 때문에 코드베이스에 대한 대규모 변경을 자동화하거나 통찰력을 얻기가 어렵다.
1.3 타입스크립트
타입스크립트는 네 가지로 설명된다.
- 프로그래밍 언어: 자바스크립트의 모든 구문과 타입을 정의하고 사용하기 위한 새로운 타입스크립트 고유 구문이 포함된 언어
- 타입 검사기: 자바스크립트 및 타입스크립트로 작성된 일련의 파일에서 생성된 모든 구성 요소(변수, 함수 등)를 이해하고 잘못 구성된 부분을 알려주는 프로그램
- 컴파일러: 타입 검사기를 실행하고 문제를 보고한 후 이에 대응되는 자바스크립트 코드를 생성하는 프로그램
- 언어 서비스: 타입 검사기를 사용해 비주얼 스튜디오 코드와 같은 편집기에 개발자에게 유용한 유틸리티 제공법을 알려주는 프로그램
1.4 타입스크립트 플레이그라운드에서 시작하기
타입스크립트 공식 웹사이트는 플레이그라운드 편집기를 제공한다.
1.4.1 타입스크립트 실전
const firstName = 'Georgia';
const nameLength = firstName.length(); // ERROR
문자열의 길이 속성이 함수가 아니라 숫자라는 지식을 활용해 주석으로 오류 사항을 알려준다.
1.4.2 제한을 통한 자유
코드를 지정한 방법으로만 사용하도록 제한하면 타입스크립트는 코드의 한 영역을 변경하더라도 이 코드를 사용하는 다른 코드 영역이 멈추지 않는다는 확신을 줄 수 있다. 예를 들어 함수의 매개변수 개수를 변경했을 경우 변경된 함수를 호출하는 코드를 업데이트하지 않았다면 타입스크립트가 알려준다.
1.4.3 정확한 문서화
타입스크립트는 구문을 적용해 객체의 '형태'를 설명하고 객체가 어떻게 보이는지 설명한다.
1.4.4 더 강력한 개발자 도구
VS Code 같은 편집기에서 타입스크립트로 코드를 작성하면 편집기는 타입스크립트를 더 깊이 있게 이해한다.