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

타입스크립트를 소개합니다

 
이번 시간부터 우리는 본격적으로 타입스크립트를 배워 볼 건데요 우리가 가장 처음으로 살펴볼 주제는 타입스크립트란 어떤 언어인가? 입니다.
사실 이 단락을 건너뛰고 타입스크립트 문법부터 바로 학습 하셔도 좋지만 우리가 어떤 기술을 잘 이해하고 필요한 상황에 응용해서 잘 써먹으려면 그 기술의 탄생한 이유와 배경에 대해 잘 알아두면 매우 도움이됩니다.
따라서 이번에는 타입스크립트가 어떤 언어인지 알아보는 시간을 갖겠습니다.
 

타입스크립트의 탄생

타입스크립트는 2012년에 마이크로소프트의 개발자이자 C#의 창시자로도 알려진 아주 유명한 덴마크 출신의 개발자 Anders Hejlsberg(앤더스 하일스버그)의 손에서 처음으로 탄생했습니다. 그래서 여담이지만 C#의 창시자가 타입스크립트도 만들었기 때문에 둘이 비슷한점이 꽤 있습니다.
notion image
 

타입스크립트는 오픈소스입니다.

또 타입스크립트는 오픈소스로 공개되어 있는데요 그래서 현재도 많은 프로그래머들이 이 언어의 개발과 유지보수에 참여하고 있고 다양한 토론을 이어가고 있어서 앞으로도 발전 가능성이 아주 창창한 언어라고 볼 수 있습니다.
notion image
 

타입스크립트의 인기

타입스크립트는 현재 자바스크립트 프로그래머들 사이에서 굉장히 인기있는 언어입니다. 사실 지금 현재는 피할수 없는 대세 라고도 할 수 있을 정도로 그 인기가 매우 대단 합니다.
notion image
 
구체적인 수치로 그 대단함을 따져보기 위해 StateOfJs라는 전 세계의 자바스크립트 개발자들을 대상으로 매년 설문조사를 하는 매우 공신력있는 기관의 설문 결과를 함께 살펴보겠습니다.
이 기관에서 2022년도 작년에 조사한 설문 결과에 따르면 지금 현재 100명의 자바스크립트 개발자들 중에 딱 11명만 타입스크립트를 아직 사용하지 않고 있다고 밝혔다고 합니다. 반대로 말하면 100중 89명은 타입스크립트를 이미 쓰고있다는 거죠?
notion image
 
영어권 뿐만 아니라 국내에서도 인기가 대단합니다. 실제로 취업시장만 봐도 자바스크립트를 사용하는 개발자 채용 공고들 중에 프론트엔드 백엔드 포지션을 막론하고 자격 요건이나 우대사항에 이제 타입스크립트가 거의 단골로 등장하고 있습니다.
notion image
또 23년도 올해에 프로그래머스가 공개한 개발자 설문 조사 결과에 따르면 가장 배우고 싶은 언어 2등으로 타입스크립트가 선정되었습니다.
사실상 1위가 코틀린이기 때문에 자바스크립트를 사용하는 개발자 분들 사이에서는 아마 타입스크립트 압도적으로 배우고 싶은 언어 1위일 것 같습니다.
notion image
notion image
 

타입스크립트는 자바스크립트의 확장판

이렇게 인기가 많은 타입스크립트는 어떤 언어일까요?
사실 타입스크립트는 자바스크립트와 완전히 다른 언어가 아닙니다.
타입스크립트는 기존의 자바스크립트를 더 안전하게 사용할 수 있도록 타입 관련된 여러가지 기능들을 추가한 언어입니다. 그래서 타입스크립트는 쉽게 말해서 자바스크립트의 확장판 이라고 부를 수 있습니다.
notion image
 
여기 동일한 기능을 하는 두 개의 코드가 있는데요 왼쪽은 자바스크립트 코드이고 오른쪽은 타입스크립트 코드입니다. 완전 비슷하게 생겼죠? 두 코드 모두 두개의 변수를 선언하고 두 변수를 더한 값을 콘솔에 출력합니다.
notion image
 
이 두 코드의 차이를 한번 살펴보면 왼쪽의 자바스크립트 코드에서는 변수를 선언할 때 변수의 타입까지 지정 하지는 않습니다. 자바스크립트에서는 변수의 타입을 프로그래머가 직접 정의할 수 있는 방법이 없기 때문이죠
notion image
 
반면에 오른쪽 타입스크립트 코드에서는 변수의 이름 뒤에 콜론과 함께 이 변수의 타입을 정의할 수 있습니다.
지금 이 타입스크립트 코드에서는 변수 a와 b 모두 number 숫자 타입을 갖도록 정의를 해 둔 겁니다. 자 이렇게 되면 이제 이 변수에는 숫자값 이외에는 넣을수가 없게 됩니다. 변수의 타입을 고정한거죠
notion image
 
자 이렇듯 우리가 원래 사용하던 자바스크립트 코드에서 타입을 정의하는 문법만 딱 추가하면 타입스크립트 코드가 됩니다.
notion image
 
이렇듯이 타입스크립트는자바스크립트에서 변수에 이렇게 타입을 직접 지정하는 등의 타입을 더 안전하게 사용할 수 있는 여러가지 기능들이 추가된 자바스크립트의 확장판이라고 볼 수 있습니다.
notion image
 
보통 확장판이라고 하면 기존에 있는 기능들과 개념은 유지한 채 뭔가 새로운 것들이 추가된 거를 확장판이라고 하잖아요? 그런것 처럼 자바스크립트의 확장판인 타입스크립트에서는 우리가 알고 있는 자바스크립트 기본 문법 들은 다 쓸 수 있습니다.
이미 자바스크립트에 익숙한 여러분께서는 타입스크립트를 공부할 때 타입을 다루는 추가적인 기능들에 대해서만 공부하면 되기 때문에 아주 빠른 시간안에 쉽게 타입스크립트를 배워 여러분의 프로젝트에 바로 활용하실 수 있습니다.
notion image
 

자바스크립트로도 충분한데 왜 타입스크립트가 필요하죠?

근데 여기서 한가지 의문이 생길 수 있는데요
타입스크립트 인기 좋은거 알겠고, 취업 시장에서 많이 요구하는 것도 알겠고, 배우기 쉬운것도 알겠는데 이미 나는 자바스크립트 만으로도 잘 쓰고 있었는데 이게 꼭 필요한가? 내지는 내가 굳이 이걸 또 배워야 하나? 라는 의문이 드실 수도 있습니다.
 
사실 자바스크립트 자체만 봐도 이미 세상에서 가장 인기있는 프로그래밍 언어입니다 실제로 2022년도 스택오버 플로우 개발자 설문 조사 결과에서도 인기 투표 1등을 차지하고 있습니다.
notion image
 
자 그런데 굳이 이렇게 잘 쓰고 있는 자바스크립트에 왜 타입이라는 기능을 추가해서 타입스크립트를 또 만들어서 쓰고 있는걸까요?
그 이유는 아이러니 하게도 자바스크립트가 너무 잘나가서 그렇습니다.
사실 자바스크립트라는 언어는 웹 브라우저에서만 동작하도록 만들어 졌고 또 아주 간단한 사용자 상호작용을 처리하기 위해 만들어졌습니다. 쉽게 말해서 그냥 웹사이트에서 우리가 버튼을 클릭하면 경고창 띄워주는 정도의 상호작용을 만들기 위해 개발된 언어라는 거죠
notion image
그래서 자바스크립트는 굳이 엄격한 문법을 갖출 필요가 없었습니다. 대신 아주 유연하게 설계되었죠 버그로부터의 안정성이나 견고함은 일부 포기하는 대신 프로그래머가 쉽고 빠르고 간결하게 코드를 작성하는데에 중점을 두고 만들어졌습니다. 간결한 프로그램을 만들 거니까 그리고 웹 브라우에서만 동작할 거니까요 그리고 실제로 이런 유연함 덕분에 많은 사람들이 편하게 잘 쓰고 있었습니다.
notion image
그런데 어느날 Node.js가 등장합니다. Node.js는 자바스크립트의 런타임 즉 실행 환경이죠 그러니까 쉽게 말해서 자바스크립트 코드를 읽어서 프로그램을 실행하는 구동기, 실행기입니다.
Node.js 탄생 이후에는 웹 브라우저에서만 실행할 수 있었던 자바스크립트를 이제는 어디서든 실행할 수 있게 되었습니다. 이 말은 곧 어떤 프로그램이든 자바스크립트를 이용해 만들 수 있다는 이야기가 됩니다. 그러자 기존에 자바스크립트를 만족스럽게 사용하던 프로그래머들이 자바스크립트를 이용해 다양한 프로그램을 만들기 시작했습니다.
notion image
웹 서버를 개발하는 것 부터 시작해서
오늘날에는 페이스북이나 인스타그램 같은 모바일 어플리케이션을 만들거나 카카오톡 같은 데스크탑 어플리케이션을 만드는데에도 활용됩니다. 자바스크립트의 한계가 사라졌고 그야말로 전성기가 도래 했다고 할 수 있습니다.
notion image
자 그런데 이렇게 복잡한 대규모 어플리케이션을 자바스크립트로 개발하다 보니까 한가지 문제가 있었습니다. 문제는 바로 자바스크립트가 너무 엄격하지 않다는 점입니다. 너무 유연하다는 점 입니다.
아까 자바스크립트는 애초에 간단한 프로그래밍을 위해 개발되어 유연 하다고 했는데요 이제는 자바스크립트가 인기가 너무 많아져서 간단하지 않은 아주 복잡한 프로그램을 만드는데까지 활용되니 오히려 이 유연함이 프로그램의 안정성을 떨어뜨리는 단점이 되어 버린 것 입니다.
notion image
 
그래서 이런 자바스크립트의 문제점을 극복하기 위해서 자바스크립트의 기존 문법들과 매력은 그대로 유지한 채 안정성만 추가로 확보한 새로운 언어가 필요해졌습니다. 이런 배경에서 자바스크립트를 더 안전하게 사용할 수 있도록 타입에 관련된 여러가지 기능을 추가한 오늘날 우리가 배우고 사용하게 될 타입스크립트가 등장하게 되었습니다.
notion image
 
결론적으로 타입스크립트는 더 복잡한 상황에서 더 대규모의 프로그램을 만들기 위해 자바스크립트를 안정적으로 사용할 수 있도록 타입 이라는 안전장치를 하나 추가한 언어라고 이해할 수 있습니다.
자 이렇게 타입스크립트란 어떤 언어인지 어떤 시대적 기술적 배경에서 등장하게 되었는지 살펴보았습니다. 이번 시간에 살펴볼 내용은 여기까지 입니다.
 
감사합니다.
이정환이었습니다.
 
NEXTJS의 단점과 TS의 장점