프론트엔드 분야를 공부하다보면 느끼는 것이 확실히 공부할 것이 엄청 많기도 하고(물론 백엔드도 마찬가지겠지만🥲), 끊임없이 트렌드가 변화하고 이에 민감하게 받아들일 필요가 있다고 느끼게 되는 순간이 많다. 당장에 프론트엔드 개발자 커리어를 유튜브에 검색해봐도 기본적으로는 마크업 언어부터 수많은 공부할 것들이 눈앞에 쌓여있는 것을 알 수있다. 그 중에서도 가장 기초가 되는 것이 바로 '자바스크립트' 이다. 하지만 최근에는 자바스크립트만으로는 부족하다는 것을 많은 사람들이 얘기하고 있고, 실제로 자바스크립트의 한계점이 드러나고 있다.
자바스크립트는 동적인 언어이며 아주 간편하게 쓸 수 있는 것이 장점이다.
1. 자료형이 없어 간편하게 객체를 다룰 수 있다.
2. 언어가 동적 타입의 인터프리터 언어이므로, 런타임 중에 오류를 발견할 수 있다.
이와 같은 자바스크립트의 특징이 때로는 대규모 프로젝트에서 '양날의 검'으로 다가올 수 있다.
가장 치명적인 단점은 이러한 특성으로 인해 서비스를 운영할 때 테스트 시 발견하지 못했던 오류가 실제로 일어날 수 있으며, 추적이 안되는 객체들이 많이 있다는 점이다.
이러한 자바스크립트의 단점을 보완하기 위해서 프론트엔드 분야에 혜성처럼 등장한 언어가 있다. 바로 타입스크립트(TypeScript)이다.
타입스크립트(TypeScript)는 자바스크립트의 슈퍼셋인 오픈소스 프로그래밍 언어이다. 마이크로소프트에서 개발, 유지하고 있으며 엄격한 문법을 지원한다.
위에서 설명한 것과 같이 타입스크립트의 본질은 자바스크립트이다. 즉, 타입스크립트는 자바스크립트 엔진을 사용하면서 커다란 애플리케이션을 개발할 수 있게 설계된 언어이다.
자바스크립트 | 타입스크립트 | |
---|---|---|
타입 | 동적타입언어 | 정적타입언어 |
언어번역기 유형 | 인터프리터 언어 | 컴파일러 언어 |
확장자 | .js 확장자 | .ts 확장자 |
사용성 | 소규모 프로젝트에 적합함 | 대규모 프로젝트에 적합함 |
아래는 차이점을 쉽게 알아보기 위한 예시이다.
타입스크립트에서는 버그가 일어나기 쉬운 요소의 타입을 선언하여 버그가 일어나는 것을 막아준다. 가령 자바스크립트에서는 타입이 다른 두 변수를 계산을 시켜주면
const a = 3;
const b = '5';
console.log(a*b)
이게 계산이 작동되어 15를 출력하는 기능이 있다. 만일 프로그래머가 이게 다른 언어처럼 계산이 작동하지 않을 것을 의도하고 이렇게 코드를 지었다면 의도치 않은 작업이 이루어지는 버그가 발생하는 것이다.
const a:number = 3;
const b:string = '5';
console.log(a*b)
이렇게 숫자면 숫자, 문자열이면 문자열이라고 타입을 선언해주어서 계산이 작동되지 못하게 하거나, 컴파일 전에 오류 메시지를 띄우게 한다.
당장에 원티드나 로켓펀치를 통해서 프론트엔드 개발자를 뽑는 공고를 확인해보아라. 그리고 우대사항에는 'typescript' 로 프로젝트를 개발해본 사람을 우대하는 사항들을 확인할 수 있을 것이다.
타입스크립트는 정적인 언어라는 설명에 부합하게 코드에 목적을 명시하고 목적에 맞지 않는 타입의 변수나 함수들에서 에러를 발생시켜 버그를 사전에 제거한다. 실제로 자바스크립트의 버그 중 15%를 타입스크립트의 사용으로 미리 예방할 수 있다는 연구가 있다고 한다. 물론 타입스크립트가 만능 디버깅 도구는 아니지만, 최소한 타입 관련 에러는 컴파일 단계에서 사전에 탐지해서 조치할 수 있다.
앞서 정의에서 언급한 것처럼 타입스크립트는 자바스크립트의 슈퍼셋이다. 즉, 자바스크립트 기본 문법에 타입스크립트의 언어를 추가한 것이다. 타입스크립트는 컴파일을 통해 자바스크립트로 변환되는 것이 일단 첫번째 목적인데, 그렇기 때문에 기존의 자바스크립트와 함께 사용하는 것이 가능하다. 따라서 프론트든 백이든 자바스크립트를 사용하는 곳이라면 어디서든 자바스크립트와 동일하게 사용할 수 있다.
그렇다면 타입스크립트를 무조건 사용해야하는 것인가? 답은 '당장은 아니어도 언젠가는 배워야할 언어' 라고 생각한다. 타입스크립트를 사용하면 오히려 컴파일 시간이 길어지고, 변수 선언 시 항상 타입을 명시해주어야 하기 때문에 코드의 길이가 길어지고, 작성 시간도 늘어나고 가독성 문제도 일어날 수 있으므로, 소규모 프로젝트에는 오히려 자바스크립트가 편리하고 적합할 수 있다.
하지만 많은 개발자들이 여전히 타입스크립트를 선호하고 있다. 개발자 지식공유 서비스인 Stack Overflow에서 2022년 전세계 7만 2천 명의 개발자 대상으로 실시한 설문조사에 따르면 타입스크립트는 개발자가 가장 원하는 언어 3위, 가장 좋아하는 프로그래밍 언어 4위에 올랐을 정도이다. (궁금하면 링크 참고 ! )
https://survey.stackoverflow.co/2022/#most-loved-dreaded-and-wanted-language-love-dread
위와 같은 통계처럼 타입스크립트는 2012년 등장 이후로 꾸준히 사랑받고 있으며, 성장하고 있는 언어임이 분명하다. 아직은 단점이 존재하는 언어이지만, 이러한 성장세를 보았을 때 앞으로는 선택이 아닌 필수적인 언어가 될 것이라 생각한다.