// example.ts
const x: number = 42;
console.log(x+5);
$ tsc example.ts
* 컴파일(Compile) : 코드를 프로그램 형태로 동작시키기 위해 프로그램이 동작하는 환경에서 이해할 수 있는 언어나 바이너리 형태로 변환해주는 작업 (고수준 언어 → 기계어)
* 파서(Parser) : 소스 코드의 구조를 분석하여 구문적으로 유효한지 확인하고, 이를 표현하기 위해 추상 구문 트리를 생성하는 프로그램 또는 프로그램의 구성 요소
* 추상 구문 트리(AST, Abstract Syntax Tree) : 소스 코드의 문법 구조를 트리 형태로 표현한 자료 구조
ex. AST 표현 (간단화된 형태)
Program
├── VariableDeclaration
│ ├── kind: "const"
│ └── declarations
│ └── VariableDeclarator
│ ├── id: Identifier (name: "x")
│ ├── typeAnnotation: TypeAnnotation (type: "number")
│ └── init: Literal (value: 42)
└── ExpressionStatement
└── CallExpression
├── callee: MemberExpression
│ ├── object: Identifier (name: "console")
│ └── property: Identifier (name: "log")
└── arguments
└── BinaryExpression
├── left: Identifier (name: "x")
└── right: Literal (value: 5)
var x = 42;
console.log(x+5);
대규모 어플리케이션에서는 여러 자바스크립트 파일을 하나로 묶는 번들링 과정이 필요할 수 있음(webpack, .. 사용)