Typescript란 무엇인가?
타입스크립트가 등장한 이유
JS는 웹에서 상호작용을 위해 구현된 언어이다.
이런 작은 목적으로 구현된 언어기 때문에 거대한 시스템을 구현하기엔 부족함이 많았다.
그러나 시간이 흘러 JS는 웹 상호작용 이상의 역할을 하게 된다.
그러자 JS의 문제들이 개발자들을 괴롭히기 시작했다.
문제의 예시는 아래와 같다
- ’==’ 동일 연산자는 인수를 강제로 변환해 예기치 않는 동작 유발
- +’20’ 같이 연산자만으로 타입을 수정하는 허술함.
- 존재하지 않는 프로퍼티에 접근을 허용함
프로그램이 커질 수록 이런 오류들로 인한 문제도 커졌다.
타입 스크립트의 등장
몇몇 언어들은 JS와 다르게 버그가 많은 프로그램을 아예 실행시키지 않는다.
프로그램을 실행시키지 않으면서 코드의 오류를 검추하는 것을 정적 검사라 한다.
Typescript는 JS에 이런 정적 검사 역할을 추가하는 것이다.
타입 스크립트와 자바 스크립트의 관계
타입 스크립트는 syntex 적으로 JS를 품고 있습니다.
즉 JS의 문법을 모두 포함한 상위 관계라고 볼 수 있습니다.
JS 문법에 정적 검사 요소가 더해진 것이 타입 스크립트입니다.
TS는 JS의 일반적인 오류를 최대한 검출해 올바른 프로그램을 만들도록 설계되었습니다.
런타임 특성
TS는 JS와 동일한 런타임 특성을 가집니다.
논리적으로 TS는 JS의 런타임 특성을 변화시키지 않습니다.
그 이유는 두 언어 사이의 미묘한 차이를 걱정하지 않고 쉽게 전환 할 수 있도록 하기 위함이죠.
삭제된 타입
요약하면 TS가 컴파일을 마치면 타입을 삭제해서 컴파일된 코드를 만듦니다.
결과물은 순수한 JS가 되는 것이죠.
이로서 JS로 구동되는 프로그램의 특성은 변화하지 않습니다.
마지막으로 TS는 JS와 동일한 표준 라이브러리를 사용합니다.
추가적인 런타임 라이브러리가 없기 때문에 TS를 위한 라이브러리 공부는 필요 없습니다.
TS와 JS 공부를 위한 조언
TS는 컴파일-타입 검사자가 있는 JS의 런타임입니다.
즉, JS는 TS를 이해하는 기반을 제공합니다.
TS만 공부하는 것 보다 JS 먼저, 혹은 둘을 함께 공부하기를 추천드립니다.