타입스크립트는 어떻게 동작할까
TIL 23. 12. 14
타입스크립트 동작 원리
대다수의 프로그래밍 언어는 어떻게 동작할까?
대다수의 프로그래밍 언어들이 어떻게 동작하는지 원리를 살펴보자.
컴퓨터는 인간과는 달리 바이트 코드나 기계어, 이진수 같은 아주 단순한 형태의 언어를 기반으로 동작한다. 따라서 프로그래밍 언어를 컴퓨터가 바로 이해하고 실행할 수 없다. 명령을 수행할 주체는 컴퓨터이므로 컴퓨터가 이해할 수 있는 언어로 명령을 전달해야 한다.
그래서 사람이 이해할 수 있는 프로그래밍 언어를 사용해 프로그램을 작성한 후, 그것을 컴퓨터가 이해할 수 있는 기계어로 변환하는 일종의 번역기를 이용한다. 이 과정을 컴파일이라고 하고, 이 일종의 번역기를 컴파일러 혹은 인터프리터라고 부른다.
프로그래밍 언어를 컴파일하면 바이트 코드라는 형식으로 변환된다. 컴파일러는 작성한 코드를 바로 바이트 코드로 변환하는 게 아니라 그 전에 AST(추상 문법 트리)라는 특별한 형태로 먼저 변환한다.
코드의 공백이나 주석 탭 등의 코드 실행에 관계없는 그런 요소들은 전부 제거하고 트리 형태의 자료구조에 코드를 쪼개서 저장 해 놓은 형태
이렇게 코드를 AST로 변환하고 나면 이제 마지막으로 컴파일러가 AST를 바이트 코드로 변환하고 컴파일이 종료된다.
타입스크립트의 동작 과정
타입스크립트 역시 컴파일 과정을 거쳐 실행된다. 특별한 점은 타입스크립트를 컴파일하면 ‘안전한 자바스크립트 코드’가 만들어진다.
먼저 컴파일러는 타입스크립트 코드를 AST로 변환한다. 그 다음 AST를 바이트 코드로 변환하는 것이 아니라 AST를 보고 코드 상에 타입 오류가 없는지 타입 검사를 수행한다.
만약 이때 코드에 타입 오류가 있었다면 타입 검사가 실패하고 컴파일이 중단된다. 타입 오류가 없는 정상적인 코드라면 타입 검사를 성공적으로 통과하고 그 다음에는 AST를 바이트코드가 아니라 ‘자바스크립트 코드’로 변환한다. 그리고 컴파일이 종료된다.
타입스크립트 코드를 컴파일해서 생성한 자바스크립트 코드는 타입 검사를 통과한 자바스크립트 코드이다.
“타입 오류가 발생할 가능성이 낮은 안전한 자바스크립트 코드”
이렇게 타입스크립트의 컴파일 결과로 만들어진 자바스크립트 코드를 Node.js나 웹 브라우저로 실행하면 앞서 살펴본 대다수의 언어들과 동일한 과정을 거쳐 컴파일 되어 실행된다.
(+) 타입스크립트 컴파일러가 컴파일하는 방법
(번역) 타입스크립트 컴파일러가 컴파일하는 방법을 읽고 Typescript compile process를 보는 것을 권장
타입스크립트 컴파일 과정을 자세히 살펴보려면? TypeScript Compiler Internals
댓글남기기