코드의 여백

점진적 타입 시스템, 타입스크립트가 가져온 변화

by rowing0328

Intro

자바스크립트는 웹 개발에서 가장 많이 쓰이는 언어로 성장했다.

 

프런트엔드뿐 아니라 백엔드에서도 폭넓게 쓰이지만,
프로젝트가 커질수록 문제가 드러나기 시작했다.

 

변수가 늘어나고 코드가 복잡해질 때마다 자바스크립트의 유연성은 오히려 독이 되기도 한다.

이때 나타난 해결책이 바로 타입스크립트다.

 

이번 글에서는 자바스크립트의 한계를 살펴보고,

타입스크립트가 이 문제를 어떻게 해결했는지 간략히 정리해 본다.

 

 

자바스크립트의 한계와 동적 타입 시스템

자바스크립트는 동적 타입 시스템(Dynamic Typing)을 사용한다.

 

쉽게 말하면,
변수를 사용할 때 타입을 명시하지 않고도 자유롭게 값을 바꿀 수 있다는 의미다.

 

예를 들어 다음과 같은 코드가 있다.

let message = "hello";
message = 123; // 숫자 대입도 가능

 

변수 message는 처음에 문자열이었지만,
숫자로 바뀌어도 아무 문제가 없다.

 

이처럼 자유롭게 타입을 바꿀 수 있기 때문에,
자바 스크립트는 유연하고 빠르게 개발할 수 있는 장점이 있다.

 

하지만 이 유연함이 항상 장점으로만 작용하지는 않는다.

 

다음 예시를 살펴보자.

let message = "hello";
message = 123;
console.log(message.toUpperCase()); // 런타임 오류 발생

 

위 코드에서 마지막 줄을 실행하면 오류가 발생한다.

 

숫자 값에서는 문자열 메서드인 toUpperCase()를 사용할 수 없기 때문이다.

 

이런 오류는 실행하기 전까지 발견되지 않는다. 

 

코드가 복잡해지고 길어질수록,
실행 시에야 발견되는 오류는 큰 문제를 일으킬 수 있다.

 

즉, 동적 타입 시스템의 최대 단점은 코드 실행 전에는 타입 관련 오류를 잡아낼 수 없다는 것이다.

 

 

정적 타입 시스템의 장점과 한계

반면, 자바나 C#과 같은 언어는 정적 타입 시스템(Static Typing)을 사용한다.

 

이 언어들은 변수를 사용할 때 타입을 미리 지정해야 하고,
코드 작성 단계에서부터 타입 오류를 잡을 수 있다.

 

예를 들어 자바로 같은 상황을 표현해 보자.

String message = "hello";
message = 123; // 컴파일 에러 발생

 

위 코드는 자바에서는 컴파일 단계에서 바로 오류가 뜬다.

타입이 맞지 않기 때문이다.

 

정적 타입 시스템을 사용하면 코드 실행 전에 미리 오류를 잡아낼 수 있어,
실행 중 발생하는 예측 불가능한 문제를 상당 부분 막을 수 있다.

 

하지만 정적 타입 시스템에도 단점이 있다.

변수마다 일일이 타입을 명시해야 하므로,
코드 작성이 길어지고 번거로워질 수 있다.

 

작은 프로젝트나 빠른 프로토타입 개발에서는 오히려 비효율적이다.

 

 

타입스크립트의 등장

자바스크립트와 정적 타입 언어의 장단점을 모두 고려해 등장한 것이 바로 타입스크립트(TypeScript)다.

 

타입스크립트는 자바스크립트를 기반으로 하면서도,
정적 타입 시스템을 적용할 수 있게 해 준다.

 

즉, 자바 스크립트의 유연함은 그대로 유지하면서도,
정적 타입 시스템이 제공하는 안정성을 함께 누릴 수 있는 언어다.

 

타입 스크립트가 특히 주목받는 이유는 점진적 타입 시스템(Gradual Type System) 덕분이다.

 

이는 모든 변수에 타입을 일일이 명시하지 않아도,
타입스크립트가 자동으로 타입을 추론해 주는 기능을 의미한다.

 

다음 코드를 보자.

let greeting = "hello"; // 자동으로 string으로 추론
let count = 123;        // 자동으로 number로 추론

 

위 코드에서 개발자는 타입을 직접 명시하지 않았지만,
타입스크립트는 자동으로 각각의 타입을 추론해 준다.

 

물론 개발자가 원한다면 명시적으로 타입을 지정할 수도 있다.

let greeting: string = "hello";
let count: number = 123;

 

즉, 타입스크립트는 자바스크립트의 자유로운 작성법을 유지하면서도,
원하는 경우 정적인 타입 체크를 통해 안정성을 확보할 수 있게 해 준다.

이로써 런타임 오류를 최소화하고 코드의 가독성과 유지보수성을 높이는 효과를 얻을 수 있다.

 

 

마무리

이제 자바스크립트만으로 부족함을 느낀다면,
타입스크립트를 배워야 할 때다.

 

코드를 더 안전하고 견고하게 만들고 싶은 개발자에게 타입스크립트는 이미 필수적인 선택이 되었다.

 

 

참고 자료 :

CSS-Tricks - The Relevance of TypeScript in 2022

 

The Relevance of TypeScript in 2022 | CSS-Tricks

The current relevance of TypeScript is undisputed. But as we get into 2022, just how relevant is TypeScript going to be moving forward?

css-tricks.com

 

한 입 크기로 잘라먹는 타입스크립트

 

한 입 크기로 잘라먹는 타입스크립트(TypeScript)| 이정환 Winterlood - 인프런 강의

현재 평점 5점 수강생 12460명인 강의를 만나보세요. 문법을 넘어 동작 원리와 개념 이해까지 배워도 배워도 헷갈리는 타입스크립트 이제 제대로 배워보세요! 여러분을 타입스크립트 마법사🧙

www.inflearn.com

'🌈Programming > TypeScript' 카테고리의 다른 글

왜 TypeScript를 배워야 할까  (2) 2025.07.28

블로그의 정보

코드의 여백

rowing0328

활동하기