자바스크립트는 동적타입 언어이기 때문에 런타임에 타입을 확정하게 된다. 즉, 타입에 대한 에러가 런타임에 발생하게 되고 버그를 만든 시점(실행 전)과 버그가 발생한 시점(실행 후)이 차이가 나서 디버깅을 어렵게 한다.
이러한 문제를 해결하기 위해 타입스크립트가 등장했다.
타입스크립트는 자바스크립트의 super set이다. 자바스크립트에 모든 기능을 포함하고 타입 안전성을 보장해주는 언어이다. 타입 스크립트는 다음과 같은 장점이 있다.
일반적인 컴파일러는 다음과 같은 과정을 거친다.
작성한 텍스트 파일을 파싱하여 AST(Abstract Syntax Tree)로 변환 → AST를 바이트코드로 변환 → 바이트 코드를 메모리에 적제하여 실행(런타임).
작성한 텍스트 파일을 파싱하여 AST로 변환 → AST를 JS파일로 변환
이와 같이 타입스크립트의 컴파일 과정은 바이트 코드가 아닌 JS로 변환을 진행한다. 그렇다면 타입 안정성은 언제 확인하는가? ⇒ AST로 변환하기 전에 타입 안정성 검사를 한다.
변환된 JS파일은 일반적인 JS파일 실행하듯이 JS의 AST로 변환하고 메모리에 적제하여 실행하게 된다.
타입스크립트의 타입 시스템은 두가지 방식으로 타입을 정의한다.