Part6_TypeSciprtCompile
장경은
책 읽기

[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를 자바스크립트로 코드로 변환한다.
  • 타입스크립트 컴파일러는 타입을 검사한 다음에 타입스크립트 코드를 각자의 런타임 환경에서 동작할 수 있도록 구버전의 자바스크립트로 트랜스파일한다.
  • 타입스크립트 컴파일러는 타입 검사를 수행한 후 코드 변환을 시작하는데, 이때 타입 오류가 있더라도 일단 컴파일을 진행한다. 타입스크립트 코드가 자바스크립트 코드로 변환되는 과정은 타입 검사와 독립적으로 동작하기 때문이다.

6.3 타입스크립트 컴파일러의 구조

스크린샷 2024-05-04 오후 10 37 28