오늘부터 타입스크립트에 입문하기 위해
강의 사이트, 인프런에서 이정환님이 진행하시는
'한 입 크기로 잘라먹는 타입스크립트' 를
들어보며 블로그를 작성하려고 합니다.
다음 게시글 내용은 해당 강의에 핸드북의 내용으로
출처는 다음과 같습니다.
https://ts.winterlood.com/7250edd7-a3fd-4662-b756-f11f927c73f2
타입스크립트를 소개합니다 - 타입스크립트 개론
한 입 크기로 잘라먹는 타입스크립트
ts.winterlood.com
타입스크립트의 탄생
타입스크립트는 2012년에 마이크로소프트의 개발자이자 C# 의 창시자로도 알려진 아주 유명한 덴마크 출신의 개발자
앤더스 하일스버그(Anders Hejlsberg)의 손에서 처음으로 탄생했습니다.
그래서 여담이지만 C# 의 창시자가 타입스크립트도 만들었기 때문에 둘이 비슷한 점이 많습니다.
타입스크립트는 오픈소스입니다
또 타입스크립트는 오픈소스로 공개되어 있는데요.
그래서 현재도 많은 프로그래머들이 이 언어의 개발과 유지보수에 참여하고,
다양한 토론을 이어가고 있어서
앞으로도 발전 가능성이 아주 창창한 언어라고 볼 수 있습니다.
타입스크립트의 인기
타입스크립트는 현재 자바스크립트 프로그래머들 사이에서
굉장히 인기있는 언어입니다.
사실 지금 현재는 피할 수 없이 대세라고도 할 수 있을 정도로
그 인기가 매우 대단합니다.
구체적인 수치로 대단함을 따져보기 위해
StateOfJs 라는 전 세계의 자바스크립트 개발자들을 대상으로
매년 설문조사를 하는 매우 공신력 있는 기관의 설문 결과를 함께 살펴보겠습니다.
The State of JavaScript Developer Survey
The annual developer survey of the JavaScript ecosystem
stateofjs.com
위 기관에서 2022년도 작년에 조사한 설문 결과에 따르면
지금 현재 100명의 자바스크립트 개발자들 중에
89명은 타입스크립트를 사용하고 있다는 것을 알 수 있습니다.
영어권 뿐만 아니라 국내에서도 인기가 대단합니다.
실제로 취업시장만 봐도 자바스크립트를 사용하는 개발자 채용 공고들 중에
프론트엔드 백엔드 포지션을 막론하고 자격 요건이나 우대사항에
이제 타입스크립트가 거의 단골로 등장하고 있습니다.
또 23년도 올해에 프로그래머스가 공개한 개발자 설문 조사 결과에 따르면
가장 배우고 싶은 언어 2등으로 타입스크립트가 선정되었습니다.
사실상 1위가 코틀린이기 때문에 자바스크립트를 사용하는
개발자들 사에서는 이미 타입스크립트를 압도적으로
배우고 싶은 언어 1위일 것 같습니다.
자바스크립트의 확장판, 타입스크립트
이렇게 인기가 많은 타입스크립트는 어떤 언어일까요?
사실 타입스크립트는 자바스크립트와 완전히 다른 언어가 아닙니다.
타입스크립트는 기존의 자바스크립트를 더 안전하게 사용할 수 있도록
타입 관련된 여러가지 기능들을 추가한 언어입니다.
그래서 타입스크립트는 쉽게 말해서
'자바스크립트의 확장판' 이라고 부를 수 있습니다.
여기 동일한 기능을 하는 두 개의 코드가 있습니다.
왼쪽은 자바스크립트 코드이고, 오른쪽은 타입스크립트 코드입니다.
정말 비슷하죠?
두 코드 모두 두 개의 변수를 선언하고,
두 변수를 더한 값을 콘솔에 출력합니다.
이 두개의 코드의 차이를 한 번 살펴보면
왼쪽의 자바스크립트 코드에서는
변수를 선언할 때, 변수의 타입까지 지정하지는 않습니다.
자바스크립트에서는 변수의 타입을
프로그래머가 직접 정의할 수 있는 방법이 없기 때문이죠.
반면에 오른쪽 타입스크립트 코드에서는
변수의 이름 뒤에 콜론과 함께 이 변수의 타입을 정의할 수 있습니다.
지금 이 타입스크립트 코드에서는
변수 a 와 b 모두 number 숫자 타입을 갖도록 정의를 해 둔 겁니다.
이렇게 되면, 이제 이 변수에는
숫자값 이외에는 넣을 수가 없게 됩니다.
변수의 타입을 고정한거죠.
이렇듯 원래 사용하던 자바스크립트 코드에서
타입을 정의하는 문법만 딱 추가하면 타입스크립트 코드가 됩니다.
앞서 말했던 것처럼,
타입스크립트는 자바스크립트에서 변수에
타입을 직접 정의하는 등,
타입을 더 안전하게 사용할 수 있는
여러가지 기능들이 추가된 자바스크립트의 확장판이라고 볼 수 있습니다.
보통 확장판이라고 하면 기존에 있는 기능들과 개념은
유지한 채 뭔가 새로운 것들이 추가된 것을 확장판이라고 하잖아요?
그런 것처럼 자바스크립트의 확장판인 타입스크립트에서는
우리가 알고 있는 자바스크립트 기본 문법들은 다 쓸 수 있습니다.
이미 자바스크립트에 익숙한 사람은 타입스크립트를 공부할 때
타입을 다루는 추가적인 기능들에 대해서만 공부하면 되기 때문에
아주 빠른 시간 안에 쉽게 타입스크립트를 배워 프로젝트에 활용할 수 있습니다.
자바스크립트로도 충분한데 왜 타입스크립트가 왜 필요하죠?
근데 여기서 한 가지 의문이 생길 수 있는데요.
타입스크립트가 인기가 좋고,
취업시장에서 많이 요구하는 것도 알겠고,
배우기 쉬운 것도 알겠는데
자바스크립트만으로도 잘 쓰고 있었는데 꼭 필요한가?
내지는 굳이 이걸 또 배워야 하나?
라는 의문이 드실 수 있습니다.
사실 자바스크립트 자체만 봐도 이미 세상에서 가장 인기있는 프로그래밍 언어입니다.
실제로 2022년도 스택오버 플로우 개발자 설문 조사 결과에서도
인기 투표 1등을 차지하고 있습니다.
그런데 굳이 이렇게 잘 쓰고 있는 자바스크립트에
왜 타입이라는 기능을 추가해서 타입스크립트를 또 만들어서 쓰고 있는 걸까요?
그 이유는 아이러니하게도
자바스크립트가 너무 잘나가서 그렇습니다.
사실 자바스크립트라는 언어는 웹 브라우저에서만 동작하도록 만들어졌고,
또 아주 간단한 사용자 상호작용을 처리하기 위해 만들어졌습니다.
쉡게 말해 그냥 웹사이트에서
프로그래머가 버튼을 클릭하면 경고창 띄워주는 정도의
상호작용을 만들기 위해 개발된 언어라는 거죠.
그래서 자바스크립트는 굳이 엄격한 문법을 갖출 필요가 없었습니다.
대신 아주 유연하게 설계되었죠.
버그로부터의 안전성이나 견고함은 일부 포기하는 대신
프로그래머가 쉽고 빠르고 간결하게 코드를 작성하는데에 중점을 두고 만들어졌습니다.
간결한 프로그램을 만들 거니까
그리고, 웹 브라우저에서만 동작할 거니까요.
그리고 실제로 이런 유연함 덕분에 많은 사람들이 편하게 잘 쓰고 있었습니다.
그런데 어느날 Node.js 가 등장합니다.
Node.js 는 자바스크립트의 런타임 즉 실행 환경이죠.
쉽게 말해 자바스크립트 코드를 읽어서 프로그램을 실행하는 구동기, 실행기입니다.
Node.js 탄생 이후에는 웹 브라우저에서만 실행할 수 있었던
자바스크립트를 이제는 어디서든 실행할 수 있게 되었습니다.
이 말은 곧 어떤 프로그램이든 자바스크립트를 이용해 만들 수 있다는 이야기입니다.
그러자 기존에 자바스크립트를 만족스럽게
사용하던 프로그래머들이 자바스크립트를 이용해 다양한 프로그램을 만들기 시작했습니다.
웹 서버를 개발하는 것부터 시작해서
오늘날에는 페이스북이나 인스타그램 같은 모바일 어플리케이션을 만들거나
카카오톡 같은 데스크탑 어플리케이션을 만드는 데에도 활용됩니다.
자바스크립트의 한계가 사라졌고 그야말로 전성기가 도래했다고 할 수 있습니다.
그런데 이렇게 복잡한 대규모 어플리케이션을
자바스크립트로 개발하다 보니까 한 가지 문제가 있었습니다.
문제는 자바스크립트가 너무 염격하지 않다는 점입니다.
자바스크립트는 애초에 간단한 프로그래밍을 위해 개발되어 유연하다고 했는데요.
이제는 자바스크리브가 인기가 너무 많아져서
간단하지 않은 아주 복잡한 프로그램을 만드는 데까지 활용되니
오히려 이 유연함이 프로그램의 안전성을 떨어뜨리는 단점이 되어 버린 것입니다.
때문에 이런 자바스크립트의 문제점을 극복하기 위해서
자바스크립트의 기존 문법들과 매력은 그대로 유지한 채
안전성만 추가로 확보한 새로운 언어가 필요해졌습니다.
이런 배경에서 자바스크립트를 더 안전하게 사용할 수 있도록
타입에 관련된 여러가지 기능을 추가한 '타입스크립트'가 등장하게 되었습니다.
결론적으로 타입스크립트는 더 복잡한 상황에서 더 대규모의 프로그램을 만들기 위해
자바스크립트를 안정적으로 사용할 수 있도록 '타입' 이라는 안전장치를 하나 추가한 언어라고 이해할 수 있습니다.
'TypeScript > 한 입 크기로 잘라먹는 타입스크립트' 카테고리의 다른 글
[타입스크립트의 기본] 기본타입이란? (0) | 2023.07.05 |
---|---|
[타입스크립트 개론] 타입스크립트 컴파일러 옵션 설정하기 (0) | 2023.07.05 |
[타입스크립트 개론] Hello TS World (0) | 2023.07.04 |
[타입스크립트 개론] 타입스크립트의 동작 원리 (0) | 2023.07.04 |
[타입스크립트 개론]JS의 단점과 TS의 장점 (0) | 2023.07.04 |