반응형

TypeScript. 타입 스크립트

필자는 학기가 끝나고 본격적으로 타입 스크립트를 학습하기로 다짐했다. 그 이유로는 이번 2학기에 노드 JS를 활용하여 커뮤니티 홈페이지를 제작하며 자바 스크립트가 웹 개발에 얼마나 유용한지 깨달았기 때문에 자바스크립트를 배우고 싶었던게 가장 크고, 다음으로 2023년 스택 오버플로우 설문조사 데이터를 시각화하여 데이터 분석을 진행한 프로젝트(https://github.com/PSLeon24/Stack_Overflow_Developer_Survey_Data_Analysis)에서 전 세계적으로 차후에 배우길 희망하는 언어 1위가 타입스크립트였기 때문에 호기심이 생겼기 때문이다.

 

자바스크립트랑 타입스크립트는 무슨 차이점이 있을까? 타입스크립트는 이름에서도 알 수 있듯이 타입(코드의 타입)과 연관이 깊다. 예를 들어, 자바스크립트에서는 3 + [] 과 같은 수식을 연산하면 에러를 뿜어내지 않고 스스로 숫자와 배열을 문자열로 바꾸어 자동으로 연산을 한다. 반면에, 타입스크립트는 이러한 타입을 엄격하게 제한하여 동일하지 않은 타입 간의 연산을 철저하게 에러를 뿜어낸다.

얼핏 보면 자바스크립트가 자동으로 타입 변환도 해주고 자유도가 높아서 더 뛰어난 것처럼 보인다. 하지만 개발자에게 자유도는 치명적이다. 수십~수백줄의 코드는 타입에 문제가 생겨도 문제의 코드를 식별할 수 있다. 하지만 만약 코드가 천줄, 만줄이 넘어가는데 에러가 없이 정상적으로 작동하지만 개발자의 실수로 인해 원하는 기능이 잘 작동하지 않는다면 큰 문제가 되지 않을까?

물론 자바스크립트도 에러를 찾을 수는 있지만 그 시점이 컴파일 이후로 프로그램을 실행할 때라는 점도 하나의 단점이다. 소프트웨어 공학을 학습하면서 배운 내용 중 테스트로 인해 결함, 에러가 빨리 발견할수록 수정에 들어가는 비용이 기하급수적으로 작아진다고 배웠다. 그런데 프로그램을 실행할 시점에 에러가 발견된다면 에러를 찾는데 그만큼 비용이 많이 들어간다는 것이다. 이러한 문제를 극복하는 것이 바로 타입스크립트이다. 타입스크립트는 개발자가 텍스트 편집기에 코드를 입력하는 순간 곧바로 에러를 발생시키기 때문에 에러가 생기는 그 시점에 바로 에러를 파악하고 수정이 가능하다.

 

위와 같은 장점들은 개발자의 생산성을 배로 늘려주기 때문에 필자는 해당 시점부터 약 2개월간 타입스크립트를 학습할 것이며, 이와 호환이 잘되는 리액트, NestJS도 함께 학습하고자 한다.

학습에 사용되는 교재는 다음과 같다.

'타입스크립트 프로그래밍(보리스 체르니, 프로그래밍 인사이트)', 'NestJS로 배우는 백엔드 프로그래밍(한용재, 제이펍)', '모던 자바스크립트로 배우는 리액트 입문(오카다 다쿠미, 한빛 미디어)'

GitHub: https://github.com/PSLeon24/Learning-TypeScript_React