💡 대다수의 프로그래밍 언어의 동작 방법
대부분의 프로그래밍 언어는 인간 친화적입니다. 컴퓨터는 인간과는 다르게 바이트코드나 기계어, 이진수 같은 단순한 언어를 기반으로 동작합니다. 따라서 영문법과 비슷한 프로그래밍 언어를 컴퓨터가 바로 이해하고 실행하기는 어렵습니다.
그래서 컴퓨터는 우리가 작성한 코드를 실행하기 위해서 컴퓨터가 해석하기 쉬운 형태로 변환하는 데 이 과정을 컴파일 이라고 부릅니다. 그래서 우리가 프로그래밍 언어로 작성한 코드를 컴파일하면 컴퓨터가 이해할 수 있는 기계어의 형태로 변환되는 것입니다. 이제 컴퓨터는 기계어를 읽고 실행하며 결과적으로 코드가 실행되게 되는 것입니다.
이때, 코드를 컴파일하는 역할을 하는 것이 컴파일러 입니다.
컴파일러는 어떤 과정으로 코드를 컴파일 하는 것일까요?
우리가 작성한 코드를 바로 바이트 코드로 변환하는 것이 아니라 그 전에 AST(추상 문법 트리)로 먼저 변환합니다. AST란? 오른쪽 그림과 같이 트리 형태의 자료구조에 코드를 쪼개어 저장한 형태를 의미합니다. 왼쪽 자바스크립트 코드를 AST 추상 문법 트리로 변환하면 오른쪽과 같이 바뀝니다.
이렇게 코드 → AST → 바이트코드 과정으로 컴파일이 종료됩니다.
💡 타입스크립트의 동작 방법
타입스크립트도 다른 프로그래밍 언어와 동일하게 코드를 AST로 변환합니다.
하지만, AST를 바이트코드로 바로 변환하는 것이 아니라, AST를 보고 코드 상에 타입 오류가 없는지를 검사하는 타입 검사가 수행됩니다. 만약 코드에 타입 오류가 있었다면 타입 검사가 실패하고 컴파일이 중단됩니다. 하지만 타입 오류가 없는 정상적인 코드라면 타입 검사를 성공적으로 통과하고, AST를 바이트코드가 아닌 자바스크립트 코드로 변환하고 컴파일이 종료됩니다. 대부분의 프로그래밍 언어는 컴파일 시 바이트 코드가 만들어지지만, 타입스크립트는 컴파일 시 자바스크립트 코드가 만들어집니다.
이렇게 타입스크립트의 컴파일 결과로 만들어진 자바스크립트 코드를 Node.js 또는 웹브라우저로 실행하면 앞서 살펴본 대다수의 언어들과 동일한 과정으로 컴파일되어 실행됩니다. 이때, 타입스크립트 코드의 컴파일 과정에 타입 검사가 포함되어 있기 때문에 타입 스크립트 코드를 컴파일해서 생성한 자바스크리트 코드는 타입 검사를 통과한 자바스크립트 코드가 됩니다. 타입 오류가 발생할 가능성이 낮은 안전한 코드라는 의미입니다.
타입 검사를 통과하지 못한 실패한 코드는 자바스크립트 코드로 변환되지 않기 때문에 실행할 수 없게 됩니다.
반면, 타입 검사를 성공한 타입스크립트 코드는 컴파일 시 타입 관련 문법들은 삭제된 안전한 자바스크립트 코드가 됩니다. 이렇게 컴파일 하는 과정은 자바스크립트를 보다 안전하게 사용하기 위해 미리 한번 코드를 검사하는 용도로 사용된다고 볼 수 있습니다.
출처) 한 입 크기로 잘라먹는 타입스크립트(TypeScript)_이정환
'📍 프로그래밍 언어 > TypeScript' 카테고리의 다른 글
[ TypeScript ] 배열과 튜플, 그리고 객체 이해하기 (0) | 2024.12.18 |
---|---|
[ TypeScript ] 데이터 타입 (기본타입 / 원시타입 / 리터럴타입) (0) | 2024.12.18 |
[ TypeScript ] Hello TS World ! (@types/node, TSX) (0) | 2024.12.17 |
[ TypeScript ] JavaScript vs TypeScript (동적타입/정적타입) (0) | 2024.12.17 |
[ TypeScript ] 타입스크립트 소개 및 등장 배경 (3) | 2024.12.17 |