typeScript
1. typeScript란 무엇이며 왜 사용할까

1-1. typeScript란 MS에 의해 개발되어 관리되고 있는 오픈소스 프로그래밍 언어입니다.
기존에 많이 사용되어 오던 자바스크립트는 java 계열의 문법을 차용하면서도 type이나 class 같이 복잡성을 야기하는 부분들을 제거함으로써 문법이 단순하고 유연한 체계를 가질 수 있었지만, 대규모 협업에서는 종종 일어나는 형변환 문제와 존재하지 않는 프로퍼티의 접근 허용 등 계속해서 일어나는 문제점들과 사용의 한계로 인해 기존의 아쉬웠던 점들을 보완하여 나온 언어가 typeScript 입니다.
1-2. typeScript를 사용하는 가장 큰 이유중 하나는 정적 타입을 지원한다는것 입니다.
변수나 반환값의 타입을 지정하지 않는 기존 방식인 자바스크립트의 동적 타이핑 방식이 아닌 명시적인 타입을 지정해주는 타입스크립트의 정적 타이핑을 사용하여 코드를 작성하면 문자열이 합성되는지 또는 숫자열이 계산되는지와 같은 개발자의 의도를 명확하게 코드로 기술할 수 있게 되므로 컴파일 단계에서 먼저 오류를 포착할 수 있으며 이는 코드의 가독성을 높이고 쉽게 예측이 가능하며 디버깅을 쉽게 해준다는 장점들이 존재하게 됩니다.
즉, 리펙토링이나 유지보수 면에서 굉장히 매력적인 언어라고 표현이 가능할듯 싶습니다.
2. typeScript의 동작원리

2-1. 어떤 과정을 거쳐 동작할까
현재 저희가 사용하는 프로그래밍 언어들은 주로 사람에게 친숙한 환경을 제공합니다 저희가 알아듣고 사용할 수 있는 만큼 반대로 컴퓨터에게는 불친절한 언어 라고 이야기 할 수 있습니다. 그래서 우리가 작성한 코드를 컴퓨터가 잘 이해할 수 있게 번역해주는 컴파일 과정을 거져 사용하게 되는데, 이때 설명하기 쉽게 표현하면 번역기 역할을 하는 컴파일러가 이러한 일련의 과정을 도와주게 됩니다.
여기서 컴파일러는 컴퓨터가 바로 사용할 수 있는 언어로 변환하는게 아닌 AST(추상 문법 트리)형태로 먼저 변환을 진행하게 됩니다. 폴더 아래에 다른 폴더나 파일이 들어있는 트리 구조와 같이 부모 노드에서 자식 노드에 코드를 쪼개어 저장해 놓은 형태를 의미하는데, 이러한 과정을 거친 후 조금 더 컴퓨터에게 친숙한 언어인 일명 바이트 코드로 번역이 되는 것 입니다. 간단하게 정리해서 말씀드리면 기존 프로그래밍 언어에서 AST(추상 문법 트리)로 먼저 변환이 된 후 다시 이진수와 같은 바이트 코드로 변환 진행 되는 것 입니다.

2-2. 기존 언어와 타입스크립트의 차이점
반면에 타입스크립트는 AST(추상 문법 트리)까지의 변환은 다른 언어들과 동일하게 이루어 지지만, 바로 바이트 코드로 변환이 이루어지는것이 아닌 타입 검사(type checking)을 진행하게 됩니다. 이 타입 검사 과정에서 문제가 있을 시에는 검사 실패로 이어져 컴파일이 종료되며, 반대로 검사에 성공하게 되면 해당 AST(추상 문법 트리)를 바이트 언어로 번역하는게 아닌 자바스크립트로 변환을 진행하게 됩니다.
2-3. 왜 그렇게 동작할까
결과적으로 타입스크립트의 컴파일 과정으로 만들어진 자바스크립트 파일은 다시 위에서 언급하였던 기존 언어들과 동일한 과정을들 거쳐 실행되는데, 여기서 컴파일이 이루어지는 자바스크립트 코드들은 타입 검사를 한번 통과한 만큼 보다 안전안 자바스크립트 코드로 정의할 수 있습니다.
타입 검사를 통과하게 되면 타입스크립트의 타입과 관련된 코드들은 자바스크립트로 변환하는 과정에서 모두 사라지게 되며, 결론적으로 프로그램 실행에는 크게 영향을 미치지 않게 되는 것 입니다.
정리해서 말씀드리면 타입스크립트는 타입검사과정을 거쳐 문제가 없을 시 자바스크립트로 변환하게 되는데, 이때 컴파일 과정 속에서 타입 검사를 거쳐온 만큼 생성되는 자바스크립트 파일은 보다 안전안 파일되는 것 이라고 이야기 드릴 수 있습니다.