TypeScript는 JavaScript의 슈퍼 셋, 즉 상위 확장자로 JavaScript 엔진을 사용하며 자신이 원하는 변수의 타입을 정의하고 프로그래밍을 하면 JavaScript로 컴파일되어 실행할 수 있습니다.

TypeScript는 컴파일 과정에서 타입을 지정하기 때문에 컴파일 에러를 예방할 수 있을뿐 아니라, 손쉬운 디버깅이 가능해집니다. 실제 연구에 따르면 모든 JavaScript 버그의 15%가 사전에 TypeScript로 감지할 수 있다고 합니다.
Javascript로 코드를 작성할 때, 객체의 필드나 함수의 매개변수로 들어오는 값이 무엇인지 알기 위해 여러 파일을 살펴야 했지만 TypeScript를 사용한다면 변수의 이름뿐만 아니라 그 데이터의 자료형까지 알 수 있게 됩니다.
객체 안의 필드값을 다 기억할 필요 없이 IDE가 자동으로 리스트 업을 해주기 때문에 생산성에도 큰 기여를 합니다.
TypeScript를 적용하는 경우 기존의 JavaScript로 짜인 코드에 확장하는 식으로 대규모 수정 없이도 TypeScript 적용이 가능합니다.
동적 타입 지정이란, 변수의 타입이 런타임, 즉 실행 시간에 결정되는 것으로 JavaScript는 대표적인 동적 타입 언어
TypeScript는 정적 타입 언어로 변수의 타입을 명시적으로 지정해서 사용합니다.
컴파일 단계에서 타입 체크를 하기 때문에 코드 작성 중 타입 오류를 방지하는 타입 체킹 기능인 ‘타입 어노테이션’을 활용하여 에러를 빠르게 발견할 수 있게 도와주기 때문에 코드를 수정하고 나서 버그가 생기는 것을 방지
Javascript는 인터프리터 언어인데, 인터프리터 언어란 소스코드를 한 줄 한 줄 읽어가며 명령을 바로 처리하는 언어로 코드가 즉시 실행되기 때문에 컴파일 언어에 비해 빠르다는 장점
TypeScript는 ‘컴파일 언어’입니다. 컴파일 언어란 소스코드 전체를 컴퓨터가 이해할 수 있는 기계어로 변환하는 언어로 변환과 실행이 따로 이루어집니다. 소스코드를 기계어로 번역하는 과정에서 인터프리터 언어에 비해 시간이 오래 걸리지만 런타임 상황에서는 모든 소스코드가 변환되어 있기에 빠르게 실행할 수 있습니다.
TypeScript는 타입의 제한을 받아 자료형을 비롯한 여러 TypeScript의 기능을 익혀야 하기에 JavaScript보다 배우기 어렵습니다.
보완점 : ‘Create React App’, ‘Vue CLI’, ‘Angualr CLI’
=> 이 도구들은 TypeScript를 기본적으로 지원하고, 프로젝트 구조와 컴파일 옵션을 자동으로 설정해 주어 보다 편리하게 사용할 수 있습니다.
매번 타입을 지정해줘야 하는 번거로움과 타입 어노테이션으로 인한 타입 에러로 실제 개발보다 타입을 지정하는 데 시간을 더 할애할 수 있기 때문인데요.
보완점 : React나 컴포넌트 기반 개발을 지원하는 라이브러리 또는 프레임워크를 함께 활용