
타입 스크립트는 자바스크립트에서 변수의 타입을 직접 지정하는 듯의 타입을 더 안전하게 사용할 수 있는 여러 가지 기능들이 추가된 자바 스크립트의 확장판이라고 불 수 있다.
자바스크립트는 웹 브라우저에서만 동작하거나 간결한 프로그램을 만들 용도로 제작이 되었다. 쉽고 빠르고 간결하며 다른 개발언어에 비해 유연한 문법과 자유로움이 자바스크립트의 장점이다.
node js의 탄생 과 js의 변화

노드js는 자바스크립트 코드를 어디서든 실행할 수 있도록 만들어 주는 js구동기 이다.
노드 js 탄생 이후에는 웹브라우저에서만 실행될 수 있었던 자바스크립트를 어디서든 실행이 가능해 졌으며 어떤 프로그램이든 자바스크립트를 사용하여 제작이 가능해졌다.
그러자 많은 사람들이 자바스크립트로 다양한 프로그램을 만들기 시작 하였으며 웹서버, 모바일 앱, 데스크탑앱 등등 여러 분야로 뻗어나가게 된것이다.
하지만 자바스크립트는 애초에 간단한 프로그램밍을 개발하기 위해 만들어진 언어이다 보니 버그 발생 가능성이 높은 단점을 가지고 있다.
처음 의도와 다르게 복잡한 프로그램을 제작하다보니 유연하고 자유로운 언어의 장점이 단점으로 작용되기 시작하였다.
그리하여 자바스크립트의 문제점을 극복하기 위해서 자바 스크립트의 기존 문법들과 매력은 그대로 유지한 채 안정성만 좀 추가로 확보한 새로운 언어가 필요성을 느끼게 되었다.
자바스크립트를 더 안전하게 사용할 수 있도록 "타입 관련 기능들을 추가한" 언어 타입스크립트가 개발 되었다.
자바스크립트에는 정확히 어떤 한계점이 있는가?
자바스크립트의 한계점을 보기에 앞서 사전으로 타입 시스템에대해 알아 보고자 한다.
타입 시스템이란? 프로그래밍 언어에서 변수, 표현식 및 함수의 데이터 타입을 정의하고, 이 타입들 간의 관계를 규정하며, 프로그램의 실행 전후에 타입 관련 오류를 예방하고 탐지하는 체계를 말한다.
타입 시스템의 주요 목적은 프로그램의 신뢰성을 높이고, 프로그램 작성시 발행할 수 있는 오류를 줄이는 것이다.


코드가 간단할 경우 크게 문제되지않지만 복잡한 프로그램을 만들 때에는 코드도 따라서 매우 복잡해지고 양도 많아 지게 되면서 오류 발생지를 찾기 힘들 뿐더러 서비스가 제대로 동작되지 않는 위험이 생길 가능성이 높아진다. 유연함과 자유로움이 독이 되는 것이다.
타입스크립트는 이 한계점을 어떻게 극복하는가?

타입스크립트는 자바스크립트의 동적 타입 시스템과 자바의 정적 타입 시스템을 혼합 한것 같은 독특한 타입 시스템을 사용한다.
마치 정적인 타입 시스템처럼 변수의 타입을 코드 실행 전에 결정하고 타입 오류가 없는지 프로그램 실행 전에 코드를 검사한다.

타입스크립트에서는 변수의 타입을 우리가 직접 정의하지 않아도 변수에 담기는 초기값을 기준으로 자동으로 알아서 타입을 출원한다.
위 이미지를 보면 변수 A의 숫자 값 1로 초기화 되고 있기 때문에 타입스크 립트가 자동으로 A라는 변수는 넘버 타입이구나 라고 출원 한 것이다.
타입스크립트가 다른 언어 대비 갖는 차별점은 무엇인가?

타입스크립트는 동적인 타입 시스템의 안전하지 않은 문제를 해결하면서도 정적인 타입 시스템의 귀찮음도 동시에 해결하는 멋진 타입 시스템이다. 이런 타입스크립트를 점진적 타입 시스템이라고 한다.
very good