본문 바로가기

📂 위클리 페이퍼

[12주차] TypeScript를 사용하는 이유와 동작 원리

📌 JavaScript만 사용하는 것과 비교해 TypeScript를 사용하는 이유에 대해 설명해주세요


 

💡 JavaScript + Type = TypeScript

자바스크립트는 C-family(C, C++ Java 등) 언어와 다른 점을 가지고 있다.

  • Prototype-based Object Oriented Language
  • Scope와 this
  • 동적 타입 언어

위의 특성들로 인해 (클래스 기반 객체지향 언어에 익숙한) 여러 개발자들이 참여하는 규모가 큰 프로젝트에서는 주의하여 사용하여야 한다.

이런 자바스크립트의 태생적인 문제들을 극복하고자 TypeScript를 도입한 것이다.

점진적 타입 언어

  • TypeScript를 사용하는 가장 큰 이유
  • 점진적 타입 언어란?
    • 동적 타입 언어와 정적 타입 언어를 혼합한 언어를 말한다.
    • 정적 타입처럼 변수의 타입을 코드 실행 전에 결정하고, 타입 오류가 없는지 프로그램 실행 전에 코드를 검사한다.
    • 동적 타입처럼 모든 변수에 반드시 타입을 명시하지 않아도 변수에 담기는 초기값을 기준으로 타입을 자동으로 결정해준다.

컴파일 언어

  • 컴파일 과정에서 오류를 잡아내기 때문에 오류를 잡아내기 쉽다는 장점이 있다.
  • 자바스크립트의 경우, 인터프리터 언어이므로 따로 컴파일 과정을 거치지 않는다.
    • 런타임에 오류를 잡아낼 수 밖에 없다.

결론

  • 여러 명이 협업을 하기 위해서는 타입을 잘 명시해주어야 의도치 않은 오류를 발생시키지 않을 수 있다.
    • Ex. 함수의 파라미터/리턴 타입이 맞지 않아서 생기는 오류 등
  • 그 타입을 명시해주기 위해 TypeScript를 사용하는 것!

📌 TypeScript의 동작 원리에 대해 설명해 주세요.


💡 타입스크립트는 컴파일 언어 다.

컴파일 언어

  • Compile
    • 컴퓨터가 해석하기 쉽게 우리가 작성한 코드를 0과 1로 변환해주는 과정.
    • object 파일로 바꿔 주는 과정
      1. 코드 → AST
    1. AST → 바이트 코드
    2. 바이트 코드 실행

🤖 타입스크립트의 컴파일 과정

1. 타입스크립트 코드 → AST
2. AST 검사 (== 타입 검사)
3. AST → 자바스크립트 코드

  • 타입스크립트의 컴파일 과정은 다른 주요 언어들과 조금 다르다.
  • 코드에서 바꾼 AST를 바이트 코드로 바꾸지 않고, 타입 검사를 수행한다.
    • 이때, 직접 코드를 실행해서 오류가 있는지 검사하는 것이 아니기 때문에 정적 검사라고 한다.
    • 실행해서 오류를 검사하는 것은 동적 검사다.
  • 이후 타입스크립트 컴파일러로 만들어진 자바스크립트 코드를 실행하면 된다.