필자는 처음 프로그래밍을 배울 때부터 타입이라는 개념을 자연스럽게 받아들였다. C++로 시작한 프로그래밍 여정은, 엄격한 타입 체크와 명시적인 선언이 기본이었다. 정확성과 성능 면에서 강력했지만, 초기에는 그 복잡함에 적응하기가 쉽지 않았다. 매우매우... 이후 Python을 접하면서 타입을 명시하지 않고도 간결하게 코드를 작성할 수 있는 자유로움이 신선하게 다가왔다. 두 언어는 서로 다른 철학을 가지고 있었고, 나는 그 차이에서 오는 장단점은 명확했다.
최근에 읽은 타입스크립트 입문서는 기존에 경험했던 C++과 Python의 중간 어딘가에 위치한 듯한 언어였다. 타입스크립트는 자바스크립트의 유연함 위에 정적 타입을 추가한 언어였다. 그동안 동적 언어의 자유로움과 정적 언어의 안정성 사이의 극과극을 경험했던 나로서는, 이 두 가지를 절묘(???)하게 결합한 타입스크립트가 흥미롭게 다가왔다.
책은 타입스크립트의 탄생 배경부터 자세히 설명하며, 왜 이런 언어가 필요한지 자연스럽게 이해하도록 이끌었다. 특히, 타입스크립트가 자바스크립트 개발자들이 흔히 겪는 문제를 해결하려고 고안되었다는 점이 와닿았다. 이를테면, "이 변수는 무슨 타입인지"를 고민하며 디버깅했던 기억이 떠올랐다. 타입스크립트는 이런 불확실성을 제거하며, 내가 C++에서 느꼈던 안정감을 자바스크립트 생태계에 녹여냈다는 느낌을 주었다.
# js
function addNumbers(a, b) {
return a + b;
}
// 의도하지 않은 호출
console.log(addNumbers(10, 20)); // 30
console.log(addNumbers(10, "20")); // "1020" (문자열로 변환됨)
# ts
function addNumbers(a: number, b: number): number {
return a + b;
}
// 의도하지 않은 호출 (컴파일 단계에서 오류 발생)
// console.log(addNumbers(10, "20")); // 오류: 'string' 타입은 'number' 타입에 할당할 수 없음
console.log(addNumbers(10, 20)); // 30
타입스크립트를 배우며 내가 느낀 가장 큰 변화는 타입을 적극적으로 활용하게 되었다는 점이다. Python에서 타입 힌트가 추가되었다고는 해도, 실질적으로는 타입 없이 코드를 작성할 때가 많았다. 반면, 타입스크립트는 타입을 명시적으로 작성하는 것이 코딩의 기본이었다. 이 과정에서 오류를 사전에 방지하는 경험은, 내가 처음 C++로 코드를 작성하던 때의 기억을 떠올리게 했다. 다만, 타입스크립트는 그 과정을 훨씬 더 간결하고 직관적으로 풀어냈다는 점이 차별화되었다.
이 책의 구성은 타입스크립트를 처음 접하는 사람에게 적합하도록 설계되어 있었다. 예제를 따라가며 하나씩 코드를 작성하다 보면 자연스럽게 개념이 머릿속에 자리 잡는 방식이었다. 특히, React를 활용한 "카운터 앱 만들기, 날씨 앱 만들기"와 같은 프로젝트 단위의 예제를 통해 실질적인 활용법을 익힐 수 있었다. 내가 Python으로 데이터를 처리하거나 AI 모델을 만들 때 사용했던 것과는 다른 관점에서 타입스크립트를 접할 수 있어 신선했다.
이 책을 읽으며 가장 좋았던 점은, 처음 코딩을 배우는 사람들에게 단순히 문법을 배우는 것을 넘어 타입스크립트를 통해 코드를 더 생산적이고 안정적으로 작성하는 법을 배웠다는 것이다.
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.