TypeScript 언어 소개 및 장점 및 단점, 컴파일러 동작 방식

2022. 11. 14. 09:57·프로그래밍 언어/TypeScript

이 포스트에서 다룰 내용

TypeScript 란?
TypeScript 장점 및 단점
TypeScript 컴파일러 동작 방식

TypeScript 란?

TypeScript 란 순수 JavaScript 로 컴파일하는 정적 형식의 JavaScript 슈퍼셋입니다.

쉽게 말해서 JavaScript 에 타입을 부여한 정적 타입 언어입니다.

TypeScript 의 장점

1. 컴파일러를 통해 사전 에러를 발견할 수 있습니다.

만약 타입스크립트를 설치하면 tsc 라는 명령어로 타입스크립트 파일을 컴파일할 수 있습니다. 이때 컴파일 단계에서 문법 에러를 잡을 수 있으므로 사소한 실수들을 프로그램 실행 전 모두 체크할 수 있습니다.

 

2. 타입을 강제화합니다.

타입스크립트는 모든 객체에 타입을 강제화하여 타입으로 발생하는 문제를 원천 차단합니다.

 

3. IDE와 같은 도구에 타입 정보를 제공함으로써 높은 수준의 인텔리센스(IntelliSense), 코드 어시스트, 타입 체크, 리팩토링 등을 지원받을 수 있습니다. 이는 대규모 프로젝트에서 필수적인 기능입니다.

 

4. 인터페이스, 제네릭 등의 객체 지향 언어 문법을 추가 지원하면서 객체 지향 언어 스타일로 코드를 작성할 수 있습니다.

TypeScript 의 단점

1. 개발의 규모가 커지면 커질수록 타입 설정이 귀찮고 시간이 오래 걸릴 수 있습니다.

타입스크립트는 타입 강제화를 위해 코드에 타입을 지정해야 합니다. 물론 타입 추론을 활용해 자동으로 타입을 인식하게 만들 수 있지만, 배열, 객체, 함수의 경우 사용자가 타입을 선언해서 미리 제한해야 합니다. 이 과정에서 자바스크립트로 개발할 때보다 시간이 더욱 소요될 수 있습니다.

2. 코드의 가독성이 떨어질 수 있습니다.

만약 타입을 지정하지 않는다면 타입 추론을 해야 하는데 타입 추론하기 힘든 경우 컴파일러에게 알려주는 형 변환을 하거나 제네릭을 사용하여 어떤 타입이 들어오더라도 동작할 수 있도록 선언해야 합니다. 문제는, 이렇게 코드를 작성하다 보면 코드가 길어질 수 있는 문제가 있습니다.

3. 근본적인 자바스크립트 오류는 해결할 수 없습니다.

타입스크립트의 원본은 자바스크립트이기 때문에 자바스크립트에서 발견하기 힘든 난해한 버그가 여전히 타입스크립트에서 나타날 수 있습니다.

TypeScript 컴파일러 동작 방식

타입스크립트 컴파일 과정은 다음과 같습니다.

1. 타입스크립트 소스 코드 -> 타입스크립트 AST(abstract syntax tree, 추상 문법 트리)

2. 타입 검사기가 AST 를 확인

3. 타입스크립트 AST -> 자바스크립트 소스 코드

4. 자바스크립트 소스 코드 -> 자바스크립트 AST(abstract syntax tree, 추상 문법 트리)

5. 자바스크립트 AST -> 바이트 코드

6. 런타임이 바이트 코드 평가

 

타입스크립트가 다른 언어와 다른 점은 컴파일러가 소스 코드를 바이트 코드 대신 자바스크립트 코드로 변환합니다. 그리고 타입스크립트는 컴파일 단계에서 AST 를 만들어 결과 코드를 내놓기 전에 타입 확인을 거치는데, 만약 여기서 문제가 생기면 바로 알 수 있습니다.

출처

https://poiemaweb.com/typescript-introduction#:~:text=TypeScript%EB%8A%94%20%EC%A0%95%EC%A0%81%20%ED%83%80%EC%9E%85%EC%9D%84,%ED%95%98%EB%A9%B0%20%EB%94%94%EB%B2%84%EA%B9%85%EC%9D%84%20%EC%89%BD%EA%B2%8C%20%ED%95%9C%EB%8B%A4. 

 

TypeScript - Intro & Install | PoiemaWeb

TypeScript 또한 AltJS의 하나로써 자바스크립트(ES5)의 Superset(상위확장)이다. C#의 창시자인 덴마크 출신 소프트웨어 엔지니어 Anders Hejlsberg(아네르스 하일스베르)가 개발을 주도한 TypeScript는 Microsoft

poiemaweb.com

https://joshua1988.github.io/ts/why-ts.html#%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%9E%80

 

Why TypeScript? | 타입스크립트 핸드북

타입스크립트란? 타입스크립트는 자바스크립트에 타입을 부여한 언어입니다. 자바스크립트의 확장된 언어라고 볼 수 있습니다. 타입스크립트는 자바스크립트와 달리 브라우저에서 실행하려면

joshua1988.github.io

https://kim1124.tistory.com/93

 

1. 타입 스크립트에 대해 알아보자.

타입 스크립트는 2012년 마이크로소프트에서 개발한 자바스크립트의 상위 호환 언어로 초기에는 크게 주목받지 못했지만, NodeJS와 ESNext의 등장으로 자바스크립트의 사용 범위가 프런트엔드, 백

kim1124.tistory.com

 

'프로그래밍 언어 > TypeScript' 카테고리의 다른 글

[TypeScript] Conditional Types, extends, infer  (0) 2022.12.25
[TypeScript] 기본 타입  (0) 2022.12.20
[Typescript] Builder Pattern  (0) 2022.08.07
'프로그래밍 언어/TypeScript' 카테고리의 다른 글
  • [TypeScript] Conditional Types, extends, infer
  • [TypeScript] 기본 타입
  • [Typescript] Builder Pattern
rondeveloper
rondeveloper
  • rondeveloper
    Ron's learning record
    rondeveloper
  • 전체
    오늘
    어제
    • 분류 전체보기 (99) N
      • k8s (1) N
      • AWS (1)
      • 리눅스 (3)
      • Docker (8)
      • 라이브러리 & 프레임워크 (14)
        • React (2)
        • NestJS (8)
        • Spring (0)
        • Django (3)
        • FastAPI (1)
      • 웹 (2)
        • Nginx (1)
      • 프로그래밍 언어 (29)
        • HTML (0)
        • CSS (0)
        • JavaScript (21)
        • Python (3)
        • Node.js (0)
        • TypeScript (4)
        • Java (1)
      • Today I learned (9)
      • 알고리즘 (9)
        • 백준 (0)
        • 프로그래머스 (8)
        • 개념 (1)
      • 티끌모아 태산 (5)
        • 하루에 영단어 하나씩 (5)
        • 독서 (0)
      • 시행착오 (3)
      • 데이터베이스 (2)
        • MySQL (0)
      • 컴퓨터 과학 (8)
        • 네트워크 (2)
        • 운영체제 (0)
        • 데이터베이스 (2)
        • 자료구조 (4)
      • 포트폴리오 (4)
        • JJINCAFE IN SEOUL (4)
        • CODEUNICORN (0)
      • 회고 (0)
      • CICD (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Til
    배열
    프로그래머스
    iterable
    조인
    IP 주소
    자바스크립트
    리눅스
    네트워크
    django
    FastAPI
    모듈
    Docker
    Python
    Kubectl
    도커
    Kubernetes
    코딩테스트
    생활코딩
    typescript
    typeorm
    nestjs
    컨테이너
    스택
    javascript
    쿠버네티스
    레벨2
    mysql
    redis
    기초
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
rondeveloper
TypeScript 언어 소개 및 장점 및 단점, 컴파일러 동작 방식
상단으로

티스토리툴바