2.1 컴파일러
프로그램은 프로그래머가 작성한 다수의 텍스트 파일로 구성됨.
이 텍스트를 컴파일러라는 특별한 프로그램이 파싱해 추상 문법 트리(abstract syntax tree, AST)라는 자료구조로 변환함.
AST는 공백, 주석, 그리고 개발자들이 논쟁하는 탭이냐 공백 등의 결과를 완전히 무시함
그리고 컴파일러는 다시 AST를 바이트코드라는 하위 수준의 표현으로 변환함
바이트코드가 만들어졌으면 런타임이라는 다른 프로그램에 바이트코드를 입력해 평가하고 결과를 얻을 수 있음
즉, 프로그램을 실행한다는 것은 컴파일러가 소스 코드를 파싱해 AST로 만들고, 다시 AST를 바이트 코드로 변환한 것을 런타임이 평가하도록 지시한다는 의미
요약
프로그램이 AST로 파싱
AST가 바이트코드로 컴파일
런타임이 바이트코드를 평가함
하지만 타입스크립트는 컴파일러가 코드를 바이트코드 대신 자바스크립트 코드로 변환한다는 것
2.2 타입 시스템
타입 검사기가 프로그램에 타입을 할당하는 데 사용하는 규칙 집합