어느 순간, TypeScript는 선택이 아닌 기본이 되었다. 거의 모든 프로젝트가 TypeScript를 전제로 시작되고, 이제는 JS보다 TS를 먼저 배우는 사람도 많다.
나도 처음엔 "다들 쓰니까 써야지"라는 생각으로 시작했지만, 그저 문법만 따라 쓰다 보니 왜 필요한지, 무엇이 달라졌는지를 체감하지 못한 채 쓰고 있었다. 이참에 강의를 들으며 문법보다는 왜 배우는지에 대해 집중하며 실제로 필요성을 느껴보려고 한다.
TypeScript란, 자바스크립트를 더 안전하게 사용할 수 있도록 타입 관련 기능들을 추가한
언어
즉, 자바스크립트를 더 복잡한 상황에서 더 안정적으로 사용하기 위해 타입이라는 안정장치를 추가한 것이다.
모든 프로그래밍 언어는 타입 시스템을 갖고 있는데, 이 타입 시스템은 타입을 언제 결정
하느냐에 따라 크게 2가지로 나뉜다.
정적 타입 시스템 (C, Java, ..)
동적 타입 시스템 (Python, JavaScrsipt, ..)
즉, 타입스크립트는 변수의 타입을 실행 전에 결정하고, 타입 오류를 실행 전에 검사하며 모든 변수에 타입을 일일이 지정할 필요가 없다. 안전성, 불편함 해결!
-> 점진적 타입 시스템 (Gradual Type System)
프로그래밍 언어는 일반적으로 사람이 이해하기 쉬운 고수준 코드를 컴퓨터가 이해할 수 있는 기계어로 변환하는 과정을 거치며, 이 과정을 컴파일이라고 한다.
TypeScript도 이러한 컴파일 과정을 거치지만, 약간 다른 점이 있다.
TypeScript는 TypeScript 전용 런타임이 없기 때문에, 최종적으로 JavaScript로 변환된 뒤 실행된다. 즉, TypeScript는 컴파일러 + 타입 검사기 역할을 함께 수행한다.
기본적인 컴파일 과정
JavaScript -> AST (추상 문법 트리) -> 바이트 코드 -> 실행
타입스크립트의 컴파일 과정
TypeScript -> AST (추상 문법 트리) ->
Type Checking (타입 검사) 성공 시,
-> 안전한 JavaScript 코드로 변환
TypeScript는 JS처럼 그대로 실행되지 않는다.
반드시 JS 코드로 변환(트랜스파일) 한 후, 그 결과물을 Node.js나 브라우저에서 실행한다.
이 중간 과정에서 타입 검사기가 코드를 검토하며, 이게 TS의 진짜 힘이다.
저는 TS는 무조건 정적이라고 생각하고 있었는데
타입스크립트 = 동적 + 정적 타입 시스템이다 라는 말을 보고 다시 TS를 공부하게되었네요 좋은 글 감사합니다!