TypeScript 이해하기

Soyeon·2025년 7월 13일
1

어느 순간, 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를 공부하게되었네요 좋은 글 감사합니다!

답글 달기