1. 타입스크립트는 자바스크립트의 슈퍼셋이다. (따라서 자바스크립트에서 이용하는 기능들을 모두 이용할 수 있다.)
2. 타입스크립트는 정적 타입 언어이다. 그렇기 때문에 컴파일 단계에서 타입이 결정되며 보다 안전한 프로그래밍을 구현할 수 있다. (반면 자바스크립트는 동적 타입 언어이다. 자바스크립트에서 타입은 런타임에서 결정된다. 그렇기 때문에 코드를 이해하는 데 어려움이 있으며 프로그램을 작성하는 과정에서 오류를 발견하기 어렵다.)
3. 타입스크립트는 자바스크립트보다 객체지향프로그래밍(OOP)에서 강력한 모습을 보여준다. ES6부터 자바스크립트 역시 클래스의 기능이 제공되기는 했지만 자바스크립트는 본질적으로 프로토타입 기반 언어이기 때문에 완벽한 객체지향을 구현하지는 못한다. 프로토타입 기반 언어는 클래스 기반 언어에서 상속을 이용하는 것과는 다르게 객체를 프로토 타입(원형)으로 하는 복제를 통해 객체 재사용을 제공한다. 반면 타입스크립트는 타입, 클래스, 인터페이스 등의 기능을 통해 자바스크립트보다 온전한 객체지향프로그래밍 기능을 제공한다.
4. ES6과 마찬가지로 브라우저들은 타입스크립트를 이해하지 못한다. 따라서 Typescript 혹은 바벨 등을 이용하여 브라우저가 이해할 수 있는 자바스크립트로 변환(컴파일)하는 과정이 필요하다.
- Babel - Typescript 비교
(1) 바벨은 타입스크립트의 타입을 신경쓰지 않는다. 예를 들어서 number 타입의 변수에 문자열을 대입하더라도 Babel은 문제를 제기하지 않고 컴파일을 완료한다. Typescript은 타입 오류 발생시 컴파일을 중단한다.
(2) 한 번에 여러 파일을 읽을 수 있는 Typescript와 달리 바벨은 한 번에 하나의 파일만 읽을 수 있다. 이것이 문제가 되는 대표적인 예시로는 enum이 있다. 바벨을 이용하는 경우 다른 파일에서 enum의 프로퍼티를 인라인할 수 없다.
(3) 바벨은 Typescript보다 많은 기능을 제공한다. 코드 최적화 플러그인이 많이 존재하며 사용되지 않은 import문 등을 제거할 수 있다.
'프론트엔드 기본개념 복습 > Typescript' 카테고리의 다른 글
[Typescript] String Union Type을 value로 사용하기 (0) | 2022.02.09 |
---|---|
[Typescript] Mapped Types & Utility Types (0) | 2022.02.02 |
[Typescript] Type alias vs Interface (0) | 2022.02.02 |
[Typescript] Intersection Type (0) | 2022.01.31 |
[Typescript] never 타입 (0) | 2022.01.31 |