Typescript 이란?
타입스크립트란 무엇인가 ?
타입스크립트는 마이크로소프트에서 개발한 Javascript 슈퍼셋 언어이다. 타입스크립트는 ECMA 스크립트를 따르기 때문에 자바스크립트의 특성을 침범하지 않으며, 최신 ECMA 표준을 지원한다. 그 뿐만 아니라 프론트 개발자에게 중요한 크로스 브라우징 역시 최신 표준 ES7, ES6 뿐만 아니라 ES5를 지원해 구브라우저에도 대응 가능하다.
ES7 이후의 최신 표준 같은 경우는 새로운 표준을 통칭 ES NEXT
로 명하고 있으며, 이 부분은 이후 tsconfig 옵션에서 확인할 수 있다. 타입스크립트에 관심이 있어 한번이라도 구글에 검색을 해봤다면 아래와 같은 사진을 많이 볼 수 있다.
그리고 es7과 typescript 사이에는 esnext 라는 ECMA 스크립트에서 표준으로 명칭하는 버전도 존재한다.
타입스크립트는 정적 타입 언어(Static type language)로서 컴파일 단계에서 타입을 검사함으로써 타입 안정성이 검증된 자바스크립트 코드를 생성해준다.(타입스크립트는 컴파일 및 개발 단계에서만 사용되고 실제 유저(end user)는 자바스크립트 코드를 이용하게 된다.) 결국 타입스크립트는 자바스크립트 + 타입이라고 생각하면 된다.
타입스크립트의 특징
타입스크립트는 자바스크립트를 확장한 언어기도 하며 ECMA 스크립트 표준을 따르기 때문에 ES6에서 지원하는 모듈 선언(export)과 호출 방식(import)을 지원하며 네임스페이스 영역 역시 ECMA6 모듈과 동일하게 동작한다. 또한 ES5에 없던 ES6의 클래스 특징을 받아들이고, 인터페이스를 지원함으로서, 더욱 완전한 객체 지향 프로그래밍 환경을 제공 한다.
아래의 표를 보면 자바스크립트와 타입스크립트 그리고 자바를 간단하게나마 비교한 표가 있다.
이름 | 자바스크립트(ES6) | 타입스크립트 | 자바 |
---|---|---|---|
클래스 | class | class | class |
인터페이스 | X | Interface | Interface |
인터페이스 구현 | X | implements | implements |
상속 | extends | extends | extends |
생성자 | constructor(){} | constructor(){} | public 클래스명(){} |
위에서 살펴보면 알 수 있듯 생성자에 대한 키워드는 Javascript 와 동일한 키워드를, 그 외의 상속이나 인터페이스는 Java와 동일한 키워드를 이용한다. 다만 타입스크립트가 두 언어와 다른점은 첫번째 ES6에 없는 인터페이스 선언 및 구현을 지원한다는 점, 두번째로 Java는 다중 생성자를 선언 가능하지만, typescript 는 단일 생성자만 선언된다는 점 그리고 마지막으로 타입스크립트는 Java와 달리 디폴트 초기화 매개 변수와 선택 매개변수를 선언 가능하다는 점이 있다.
대표적인 정적 타입 검사 언어로는 Java와 C++이 잇고, 동적 타입 검사 언어로는 Jcript 가 있다. (값을 변수에 할당할때 타입이 정해지는 것을 동적 타이핑이라고 한다.) 하지만 타입스크립트는 점진적 타입 검사
를 수행한다.( 대표적으로 파이썬과 타입스크립트가 있음 ) 이러한 점진적 타입 검사의 특징은 컴파일 시간에 타입 검사를 수행하면서 필요에 따라 타입 선언의 생략을 허용 할 수 있다는 점이다. ( 타입 선언을 생략하면 암시적 형변환이 일어나며, 점진적 타이핑을 설명하기에 적절한 타입으로 any
타입이 있음)