# Typescript : 타입스크립트 언어의 특징과 장단점

- Author: @laetipark
- Published: 2024-05-21
- Updated: 2024-05-21
- Source: http://blex.me/@laetipark/typescript-%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%96%B8%EC%96%B4%EC%9D%98-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EC%9E%A5%EB%8B%A8%EC%A0%90
- Tags: javascript, es6, typescript

---

### Typescript
- 타입스크립트(Typescript): Microsoft에서 개발한 자바스크립트(Javascript) 기반 언어  
![](https://static.blex.me/images/content/2024/5/21/20245219_RWA2xkdu1GVVuALdJm9i.png)
    - **정적 타입 언어**: 자바스크립트에 정적 타입 문법을 추가한 상위 언어, 반면 자바스크립트는 런타임에 따라 결정되는 동적 타입 언어
    ```typescript
    // 타입을 명시적으로 선언
    const foo: string;
    const bar: number;
    const baz: boolean;
    ```
    - **컴파일 언어**: 자바스크립트로 컴파일 과정을 거친 후 실행할 수 있음, 반면 자바스크립트는 코드를 읽어가며 명령을 바로 처리하는 `인터프리터 언어` 
    - 그 외 `Generic`, `Enum`, `Interface` 등의 기능들이 있음

### 타입스크립트 장단점
- **장점**
    - **타입(Type) 시스템**: 컴파일 과정에서 타입을 사용하기 때문에 에러를 예방할 수 있으며, 디버깅이 가능함
    - **높은 생산성**: 객체 필드나 함수 매개변수로 들어오는 변수의 이름과 자료형 확인을 쉽게 할 수 있어, 자바스크립트보다 코드 작성을 쉽고 직관적으로 할 수 있음
    - **자바스크립트의 슈퍼셋**: 자바스크립트 프로젝트 코드를 수정하여, 타입스크립트로 점진적으로 적용할 수 있음
        - 슈퍼셋(Superset): 특정한 언어의 모든 기능을 포함하면서, 다른 기능까지 포함하도록 향상 또는 확장된 것
- **단점**
    - **초기 세팅이 어려움**: 자바스크립트 엔진에서 실행되기 때문에, 따로 설치해야하는 모듈이나 컴파일을 위한 옵션(tsconfig.json)을 설정해주어야 함  
		![tsconfig.json](https://static.blex.me/images/content/2024/5/21/20245219_qrU58iBoN8SQdKQ2BBU0.png)
    - **타입 지정으로 인한 생산성 저하**: 타입의 지정이나, interface, class등에 익숙하지 않은 경우 생산성이 저하될 수 있음

### 관련 포스트
- [주요 ES6 문법(ES6)](https://blex.me/@laetipark/nodejs-%EA%B5%90%EA%B3%BC%EC%84%9C-2-%EC%95%8C%EC%95%84%EB%91%90%EC%96%B4%EC%95%BC-%ED%95%A0-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8)

### 참고 자료
- [(JavaScript)ES6와 TypeScript의 공통점과 차이점, Tistory, 흥부의 개발블로그](https://dhdnjswo5000.tistory.com/56)
- [TypeScript 사용하는 이유, 이랜서](https://www.elancer.co.kr/blog/view?seq=183#:~:text=TypeScript%EB%9E%80&text=TypeScript%EB%8A%94%20JavaScript%EC%9D%98%20%EC%8A%88%ED%8D%BC,%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%90%98%EC%96%B4%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.)
