#01 Typescript가 나오게 된 이유

taeheon95·2021년 9월 8일
0
post-thumbnail

Typescript란?

Javascript에 타입을 부여한 Javascript(이하 자바스크립트)의 Superset언어입니다. 타입스크립트는 자바스크립트와 달리 브라우저, Node.Js에서 실행하려면 파일을 컴파일 하는 과정을 거쳐야 합니다.

다른 컴파일 언어들은 머신 코드와 같은 Low Level Langauge를 만드는 것과 달리 Typescript(이하 타입스크립트)는 고급 언어인 Javascript를 만들어내는 독특한 특성을 가지고 있습니다.

🤷‍♂️🤷‍♂️🤷‍♂️ 왜 나오게 되었는가?

기본적으로 타입스크립트로 할 수 있는 것은 자바스크립트로도 할 수 있습니다. 애초에 타입스크립트를 컴파일하면 결국엔 자바스크립트로 나오게 됩니다. 그럼 의문을 가질 것입니다. 자바스크립트로 나오는 것이면 그냥 자바스크립트로 작성하면 되는것 아닌가?

또한 자바스크립트 자체도 다른 언어(ex. C, C++, Java, Python)들에 비해 추상화가 많이 되어있어서 익히기 힘든데 더 기능도 많고 배워야 할 게 많은 타입스크립트를 왜 배우는 것인가 의문이 생깁니다.

Javascript의 짧은 역사

뜬금없이 타입스크립트를 배우는데 왜 자바스크립트의 역사 얘기를 꺼내는 것인지 의아할 것입니다. 그러나 자바스크립트의 역사 속의 등장 배경이 자바스크립트의 특징을 만들어 냈고 그러한 자바스크립트의 특징 때문에 타입스크립트가 등장하게 되었으니 관련이 없지 않습니다.

자바스크립트가 처음 탄생하게 되었을 때 자바스크립트는 브라우저를 위한 스크립트 언어로 만들어졌습니다. 때문에 자바스크립트로 수십 줄 이상의 코드를 적는 것은 이례적인 일이였으며 그때 당시에는 문제가 크게 없었습니다.

그러나 시간이 점점 흘러 자바스크립트가 점점 유명해지고 언어적 완성도가 높아지고 웹이 성장하고 node.js와 같이 서버 애플리케이션을 만들수 있는 자바스크립 런타임이 나오게 되면서 자바스크립트는 더 이상 웹 브라우저에서만 짧게 사용되는 코드가 아니게 되었습니다. 코드의 길이도 예전과는 달리 길어지게 되었고 이전에는 느끼지 못했던 불편한 점들이 나오게 된 것입니다.

Javascript의 불편한 점

자바스크립트는 많은 불편한 점을 가지고 있습니다. 과거(es6 이전)에는 var로만 변수를 선언할 수 있어서 호이스트 문제가 있었습니다. 코드를 최대한 실행하는 것이 자바스크립트의 원칙이기 때문에 문제가 될 수 있수도 있는 코드도 되는데까지 실행하는 단점이 있었습니다.

예를 들어 아래의 코드를 실행한다고 가정해봅시다.

const obj = { width:10, height:"15"};
const area = obj.width + obj.height;
console.log(area);

출력값은 1015가 될 것입니다. 위에서 말했듯이 자바스크립트는 최대한 코드를 실행시키기 때문에 숫자를 자동으로 문자열로 변형하여 실행시키기 때문에 발생하는 문제로서 실제로 팀으로 개발하게 될 시 많은 문제가 여러군데에서 이러한 문제가 발생하게 될 수 있습니다.

또 아래의 코드를 실행할 시

const num=11;
const strNum="11";
if(num == strNum){
  // 아무 코드
}

자바스크립트는 if 조건문을 문제없이 실행시키기 위해 변수의 자료형을 변환하여 비교합니다. 그래서 if 조건문이 참이 되어 괄호 안의 내용이 실행됩니다. 이는 개발자가 생각한 방식과는 다르게 돌아감으로서 버그의 원천이 됩니다.

자바스크립트는 이런 개발자가 잘못 작성한 코드를 런타임 또는 코드 작성시에 버그를 던지지 않기 때문에 런타임에 결과를 보게되었을 때 잘못된 것을 알게됨으로서 여러 모듈과 결합되어 있을 때 실행하게 된다면 걷잡을 수 없는 버그로 들어가게 된다는 불편한 점이 있습니다.

또한 타입핑이 되어있지 않기 때문에 IDE 또는 Code editor의 코드 지원을 받기 힘들다는 불편한 점이 있습니다.

Javascript의 장점

그러나 위의 불편한 점 뿐만 아니라 자바스크립트는 많은 장점을 가지고 있습니다.

  1. 속도
    자바스크립트는 인터프릭터 언어입니다. 인터프릭터의 장점인 코드를 바로 실행할 수 있기 때문에 바로 바로 결과를 볼 수 있습니다. 또한 자바스크립트 인터프릭터는 다른 인터프릭터보다 속도가 빠르기 때문에 프로그램이 빠르게 실행될 수 있습니다.
  2. 단순함
    자바스크립트는 함수형 프로그래밍을 도입하여 코드를 단순하게 작성할 수 있습니다.
  3. 풍부한 라이브러리
    자바스크립트의 단순함과 속도를 바탕으로 많은 라이브러리가 만들어졌기 때문에 자바스크립트는 편하게 사용할 수 있습니다.
  4. 프론트엔드와 백엔드 개발 언어 통일
    자바스크립트는 원래 프론트엔드에서 사용되는 언어였지만 nodejs가 나오게 되면서 백엔드와 프론트엔드의 언어를 통일 할 수 있게 되었습니다.

이외에도 많은 장점이 있습니다.

나오게 된 이유

위와 같은 이유로 자바스크립트를 거의 그대로 쓸 수 있으면서도 자바스크립트가 가지고 있는 단점인 유연한 타입과 코드 지원을 보완해줄 수 있는 타입스크립트가 나오게 되었습니다.

결론

타입스크립트는 컴파일 언어로서 컴파일의 결과로 자바스크립트 코드를 만들어 냅니다. 타입스크립트는 자바스크립트의 불편함(동적 타입핑, 코드 지원 없음)을 보완하기 위해 나오게 되었습니다.

0개의 댓글