TypeScript 이해하기

Soyeon·2025년 7월 13일

어느 순간, TypeScript는 선택이 아닌 기본이 되었다. 거의 모든 프로젝트가 TypeScript를 전제로 시작되고, 이제는 JS보다 TS를 먼저 배우는 사람도 많다.
나도 처음엔 "다들 쓰니까 써야지"라는 생각으로 시작했지만, 그저 문법만 따라 쓰다 보니 왜 필요한지, 무엇이 달라졌는지를 체감하지 못한 채 쓰고 있었다. 이참에 강의를 들으며 문법보다는 왜 배우는지에 대해 집중하며 실제로 필요성을 느껴보려고 한다.

TypeScript의 탄생 배경

TypeScript란, 자바스크립트를 더 안전하게 사용할 수 있도록 타입 관련 기능들을 추가한 언어

  • 자바스크립트는 변수의 타입을 직접 정의할 수 있는 방법이 없다.
  • 근데 굳이 굳이 왜 타입스크립트를 써야하나. 자바스크립트가 너무 잘나가서?
    • 자바스크립트는 아주 쉽고 빠르고 간결하게 작성할 수 있는 것에 중점을 두고 만들어졌는데, node.js 가 등장함 (자바스크립트 런타임)
    • 이로 인해, 웹 브라우저에서만 사용할 수 있었던 게 어디서든 사용할 수 있게 됨. (다양한 프로그램들이 개발)
    • but, 자바스크립트가 너무 엄격하지 않음. 이 유연함이 버그를 발생시켜 안정성을 떨어뜨림
    • 이러한 문제를 극복하기 위해 안정성을 추가한 언어가 타입스크립트.

타입스크립트 = 자바스크립트의 확장판

즉, 자바스크립트를 더 복잡한 상황에서 더 안정적으로 사용하기 위해 타입이라는 안정장치를 추가한 것이다.


Type System

모든 프로그래밍 언어는 타입 시스템을 갖고 있는데, 이 타입 시스템은 타입을 언제 결정하느냐에 따라 크게 2가지로 나뉜다.

  1. 정적 타입 시스템 (C, Java, ..)

    • 코드 실행 이전 모든 변수의 타입을 고정적으로 결정
    • but, 코드의 양이 넘 늘어남
  2. 동적 타입 시스템 (Python, JavaScrsipt, ..)

    • 코드를 실행하고 나서 그때그때마다 유동적으로 결정
    • 변수의 타입이 하나로만 고정되지 않음, 유연함
    • but, 에러 발생 가능성

타입스크립트 = 동적 + 정적 타입 시스템이다.

즉, 타입스크립트는 변수의 타입을 실행 전에 결정하고, 타입 오류를 실행 전에 검사하며 모든 변수에 타입을 일일이 지정할 필요가 없다. 안전성, 불편함 해결!

-> 점진적 타입 시스템 (Gradual Type System)



TypeScript의 동작 원리

프로그래밍 언어는 일반적으로 사람이 이해하기 쉬운 고수준 코드를 컴퓨터가 이해할 수 있는 기계어로 변환하는 과정을 거치며, 이 과정을 컴파일이라고 한다.

TypeScript도 이러한 컴파일 과정을 거치지만, 약간 다른 점이 있다.

TypeScript는 TypeScript 전용 런타임이 없기 때문에, 최종적으로 JavaScript로 변환된 뒤 실행된다. 즉, TypeScript는 컴파일러 + 타입 검사기 역할을 함께 수행한다.

  • 기본적인 컴파일 과정

    JavaScript -> AST (추상 문법 트리) -> 바이트 코드 -> 실행

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

    TypeScript -> AST (추상 문법 트리) -> Type Checking (타입 검사) 성공 시, -> 안전한 JavaScript 코드로 변환

TypeScript는 JS처럼 그대로 실행되지 않는다.

반드시 JS 코드로 변환(트랜스파일) 한 후, 그 결과물을 Node.js나 브라우저에서 실행한다.

이 중간 과정에서 타입 검사기가 코드를 검토하며, 이게 TS의 진짜 힘이다.


profile
탄탄한 개발자로 살아남기🗿

1개의 댓글

comment-user-thumbnail
2025년 7월 13일

저는 TS는 무조건 정적이라고 생각하고 있었는데
타입스크립트 = 동적 + 정적 타입 시스템이다 라는 말을 보고 다시 TS를 공부하게되었네요 좋은 글 감사합니다!

답글 달기