[6장] 타입스크립트 컴파일
6.1 자바스크립트의 런타임과 타입스크립트의 컴파일
런타임과 컴파일타임
- 소스코드는 컴파일러에 의해 기계어 코드로 변환되어 실행이 가능한 프로그램이 되는데 이 단계를 **컴파일타임(compile time)**이라고 부른다.
- 다시 말해 컴파일타임은 소스코드가 컴파일 과정을 거쳐 컴퓨터가 인식할 수 있는 기계어 코드(바이트 코드)로 변환되어 실행할 수 있는 프로그램이 되는 과정을 의미한다.
- 소스코드의 컴파일이 완료되면 프로그램이 메모리에 적재되어 실행되는데 이 시간을 **런타임(Runtime)**이라고 한다. 즉, 런타임은 컴파일 과정을 마친 응용 프로그램이 사용자에 의해 실행되는 과정이다.
타입스크립트의 컴파일
- 타입스크립트는 tsc라고 불리는 컴파일러를 통해 자바스크립트 코드로 변환된다.
- 하지만 타입스크립트는 고수준 언어가 저수준 언어로 변환되는 것이 아니라 고수준 언어(타입스크립트)가 또 다른 고수준 언어(자바스크립트)로 변환되는 것이기 때문에 컴파일이 아닌 **트랜스파일(Transpile)**이라고 부르기도 한다.
- 타입스크립트 컴파일러는 소스코드를 해석하여 AST(Abstract Syntax Tree, 최소 구문 트리)를 만들고 이후 타입 확인을 거친 다음에 결과 코드를 생성한다.
- AST
- 컴파일러가 소스코드를 해석하는 과정에서 생성된 데이터 구조다. 컴파일러는 어휘적 분석(lexical analysis)과 구문 분석(syntax analysis)을 통해 소스코드를 노드 단위의 트리 구조로 구성한다.
- 타입스크립트는 컴파일타임에 타입을 검사하기 때문에 에러가 발생하면 프로그램이 실행되지 않는다. 이러한 특징 때문에 타입스크립트를 컴파일타임에 에러를 발견할 수 있는 정적 타입 검사기(static type checker)라고 부른다.
6.2 타입스크립트 컴파일러의 동작
- 타입스크립트 컴파일러는 tsc binder를 사용하여 타입 검사를 하며, 컴파일타임에 타입 오류를 발견한다. 타입 검사를 거쳐 코드를 안전하게 만든 이후에는 타입스크립트 AST를 자바스크립트로 코드로 변환한다.
- 타입스크립트 컴파일러는 타입을 검사한 다음에 타입스크립트 코드를 각자의 런타임 환경에서 동작할 수 있도록 구버전의 자바스크립트로 트랜스파일한다.
- 타입스크립트 컴파일러는 타입 검사를 수행한 후 코드 변환을 시작하는데, 이때 타입 오류가 있더라도 일단 컴파일을 진행한다. 타입스크립트 코드가 자바스크립트 코드로 변환되는 과정은 타입 검사와 독립적으로 동작하기 때문이다.