• ABOUT
  • PORTFOLIO
  • POSTS
  • GUESTBOOK

© 2025-2026 BlueCool12 All rights reserved.

2026.01.21TypeScript

📘 TypeScript를 사용하는 이유

1. TypeScript를 사용하는 이유

TypeScript를 공부하기 전에 먼저 한 가지 질문을 던져볼 필요가 있다.

JavaScript로도 잘 동작하는데 왜 굳이 TypeScript를 사용해야 할까?

이 글에서는 본격적으로 TypeScript 문법을 다루기 전에 TypeScript가 무엇인지, 그리고 어떤 문제를 해결하기 위해 등장했는지를 정리해보려고 한다.

TypeScript를 단순한 문법이 아닌, 무엇을 위한 도구인지 이해하는 것이 목표이다.


2. TypeScript란 무엇인가?

TypeScript는 JavaScript에 타입(Type) 시스템을 추가한 언어이다. JavaScript의 상위 집합(Superset)이기 때문에 기존 JavaScript 문법을 그대로 사용할 수 있다.

TypeScript의 가장 큰 차이점은 정적 타입 검사(Static Type Checking)를 제공한다는 점이다. 이를 통해 컴파일 시점에 오류를 미리 발견할 수 있다.

여기서 중요한 사실이 있는데 TypeScript 코드는 결국 JavaScript로 컴파일되어 실행된다는 점이다. Node.js나 브라우저는 TypeScript를 직접 실행하지 않는다. 따라서 TypeScript는 실행 환경이 아니라 개발 과정에서 안정성을 높이기 위한 도구에 가깝다.


3. JavaScript와 TypeScript의 차이

JavaScript의 대표적인 특징은 다음과 같다.

  • 동적 타입 (Dynamic Typing)
  • 런타임에 타입이 결정됨
  • 유연하지만 실수에 취약함
function add(a, b) {
return a + b;
}

add(1, "2"); // 문자열 연산 "12"

위 코드는 에러 없이 실행되지만 개발자가 의도한 결과가 아닐 가능성이 높다.

[TypeScript의 접근 방식]

function add(a: number, b: number): number {
return a + b;
}

add(1, "2"); // 컴파일 에러 발생

TypeScript를 사용하면 실행 전에 이미 타입 오류를 발견할 수 있다.

*핵심 차이 정리
JavaScript는 타입 검사가 런타임에 이루어지는 반면 TypeScript는 컴파일 시점에 타입을 검사한다. 이 차이로 인해 TypeScript는 상대적으로 높은 안정성을 제공하고, 코드 구조를 명확하게 유지할 수 있으며 대규모 프로젝트에서 특히 강점을 가진다.


4. TypeScript가 해결하려는 문제

- 실수를 빠르게 발견할 수 있다

JavaScript에서는 에러가 대부분 실행 시점(런타임)에 드러난다. 반면 TypeScript는 위에서 확인했듯이 컴파일 시점, 즉 코드를 작성하거나 파일을 저장하는 순간 혹은 CI 빌드 단계에서 문제를 발견할 수 있게 해주어 배포 전에 오류를 차단할 수 있다.


- 코드의 가독성이 좋아진다

JavaScript의 경우 코드가 커질수록 함수의 입력값이나 반환값이 무엇인지 파악하기 어려워진다.

function process(data) {
// data가 무엇인지 알기 어렵다
}

반면 TypeScript에서는 타입을 명시함으로써 코드 자체가 문서 역할을 하게 된다.

function process(data: UserResponse): void {
// data는 UserResponse 타입
}


- 협업 시 암묵적인 규칙을 코드로 강제할 수 있다

어떤 값이 null이 될 수 있는지, 어떤 필드는 반드시 존재해야 하는지, 어떤 형태의 객체가 오가는지 등 TypeScript를 사용하면 이런 구두 약속을 타입으로 강제할 수 있다.

이는 협업 과정에서 발생하는 오해와 버그를 크게 줄여준다.


5. TypeScript가 해결하지 못하는 것

*TypeScript는 런타임 시점의 데이터 검증을 수행하지 않는다.

예를 들어 API 서버가 잘못된 데이터를 내려주는 경우, 외부 입력 값이 예상과 다른 경우 등 이런 문제는 TypeScript만으로는 해결할 수 없다.

TypeScript는 코드의 형태를 보장할 뿐 실제 데이터의 진실성은 보장하지 않는다. 그래서 실무에서는 종종 zod, joi, yup 같은 런타임 검증 라이브러리를 함께 사용한다.

TypeScript는 JavaScript를 대체하기 위한 언어라기보다 JavaScript를 더 안전하고 예측 가능하게 사용하기 위한 도구이다. 그렇기 때문에 TypeScript를 공부한다는 것은 새로운 언어를 배우는 것이 아니라 JavaScript를 더 잘 사용하는 방법을 익히는 과정에 가깝다.

前の記事
🐞 NestJS 증분 빌드 메커니즘 이해와 캐시 이슈 정리
次の記事
🌳 비선형 자료구조의 핵심 - 트리(Tree) 구조 완전 정복
装飾ロゴ