Typescript - [1] 타입스크립트를 왜 사용하는가?
  1. 개발

Typescript - [1] 타입스크립트를 왜 사용하는가?

2022, February 09

[1] 타입스크립트를 왜 사용하는가?

참고영상: https://youtu.be/5oGAkQsGWkc

자바스크립트의 아쉬운 부분을 보완하기 위해 등장한 것이 타입스크립트라고 한다. 정확히 자바스크립트의 어떤 부분을 보완할 수 있는지 강의를 들으며 정리해 보았다.

예를 들어 아래와 같은 add라는 함수를 만들었다고 하자.

이 함수는 두 개의 인자로 숫자(number type)를 받고, 그 값들을 합한 결과를 얻기 위해 만들어졌다.

그런데 자바스크립트는 인자에 아무 것도 전달받지 않은 상태에서도 에러 없이 NaN이라는 결과를 콘솔에 출력한다.

function add(num1, num2) {
  console.log(num1 + num2)
}
add(); // NaN

또한 문자열을 (string)을 넣어도 아무 문제 없이 동작할 것이다.

add('Hi', 'I am js'); // HiI am js

아래와 같이 인자를 1개나 3개를 넣어도 아무 에러 없이 콘솔에 값을 출력할 것이다.

add(1) // NaN, 인자를 하나만 전달받음
add(1,2) // 3, 원하는 결과
add(3,4,5) // 7, 인자 3개를 전달 받았기 때문에 앞에 두 숫자만 더하고 나머지는 무시

⇒ 이렇게 다양한 방식으로 사용되고 있지만 1,2라는 인자를 전달 받았을 때를 제외하고는 사용 방식이나 결과가 원래의 목적과 거리가 있다.

이러한 자유도는 자바스크립트의 장점이자 단점이다. 자바스크립트의 자유로움은 작업할 때 아주 편리하겠지만 작업자마다 작업 방식이 상이하기 때문에 프로젝트의 규모가 커질 경우 유지보수를 하는 데 어려움이 발생할 수 있다.

(물론.. 자바스크립트는 이런 단점을 보완하기 위해 ES6에서 변수 선언 방식에 차이를 주는 등의 개정을 하고 있다.)

그리고 자바스크립트는 타입(문자, 숫자, 불린 등)을 실행 시에 결정하는 동적언어(루비, 파이썬 등이 포함)이다. 따라서 실행한 이후에 타입 에러를 확인할 수 있다.

그런데 타입스크립트는 한 번 컴파일을 해야하기 때문에 (브라우저가 인식을 하지 못한다.) 그 과정에서 정적언어와 같이 컴파일 에러가 발생한다. 따라서 자바스크립트와는 달리 실행 전에 타입 에러를 미리 알고 방지할 수 있다.

그렇다면 타입스크립트를 항상.. 혹은 무조건 사용해야할까?

찾아보니 타입스크립트는 사용하는 데에 번거로움이 있어(독자적인 언어가 아니어서 환경세팅을 해야한다.) 작은 프로젝트에서는 사용하지 않는 편이 좋을 수 있다고 한다. 초반 세팅이 불편하고 엄격하고 정확한 타입 정의를 해야해서 생산성이나 가독성이 떨어질 수 있다.

또한 타입스크립트는 에러를 방지할 수는 있지만 아예 차단해주는 것은 아니다. 때문에 타입스크립트에 너무 의존하는 것은 좋은 방법이 아니다. (물론 사용하지 않을 때 보다는 에러나 버그가 훨씬 적겠지만)

⇒ 결국 자바스크립트와 마찬가지로 어떻게 사용하느냐에 따라 타입스크립트의 장점을 살릴 수도 있고 단점이 부각시킬 수도 있다.


Lee KR
Front-End Developer