[TS] 타입스크립트는 항상 최선의 선택지인가

 

여느때와 같이 누워서 빈둥거리다가 위기감이 들어 내가 어떤걸 더 공부해야하는지 유튜브로 영상정도는 찾아보자.. 라는 생각과 함께

회사가 프론트엔드 직무에서 신입에게 원하는 것들에 대해 설명해놓은 유튜브 영상이 있어서 보고있었다.

 

쭉쭉쭉 넘어가면서 보다가, 한 부분에서 흠칫 놀라지 않을 수 없었다.

 

어떤 부분이었냐면, 타입스크립트가 항상 최선의 선택지가 아닐 수 있다는 중간의 설명때문이었다.

(영상에서 주객이 전도된 느낌이라고 하셨음)

 

해서, 타입스크립트를 공부하고있는 지금. 타입스크립트가 항상 자바스크립트보다 더 나은 선택지라고 할 수 있는지에 대해서 찾아보았다.

 


TypeScript vs JavaScript

타입

TS는 타입을 통해서 JS에서 빈번하게 일어나는 타입 관련한 문제를 예방할 수 있다는 것이 가장 큰 특징이라고 할 수 있겠다.

다만, JS에서의 동적 타입때문에 일어나는 에러만큼 TS에서는 컴파일 에러가 빈번하게 발생한다. (타입이 안맞다는 등의 이유로)

 

위의 영상에서도 가장 크게 짚은 이슈였다. 코딩을 하는데는 얼마 걸리지 않지만, 타입을 정하는데 시간이 훨씬 많이 든다는 이유였다.

물론 타입을 정함으로써 이후 실행되면서 오류가 발생하는 일이 유의미하게 줄어들 것이다.

 

프로젝트가 커지면 커질수록 type-safe하다는건 커다란 장점으로 다가오게 될 것이다.

다만, 반대로 이야기 했을 때 작은 규모의 프로젝트에서는 하나하나 다 타입으로 작성하는 시간은 오히려 낭비가 될 수 있다는 것이다.

자바스크립트에서도 type을 확인하지 못하는건 아니니, 이런 부분들을 If문같은 조건으로 확인을 하는게 오히려 효율적일 수 있다.

 

유연성이냐 가독성이냐

TS에서는 자료형을 명시하기때문에 투입 / 반환되는 데이터에 대해서 알아보기 쉬워진다.

JS에서는 JSDoc과 같은 주석이 따로 달려있지 않다면 직접 들어가서 코드를 확인해야할 수 있다.

 

특히, JS에서 object 형태라면, 더더욱 코드를 읽이 힘들어질 것이다.

하지만 TS라면? interface던 type이던 선언해버린다면 해당 파트에 커서를 띄우던지, 타입을 보던지 한다면 해당 내용에 대해서 쉽게 이해할 수 있다.

 

하지만 이러한 가독성을 얻는 대신, 유연성을 포기하게 된다.

JS에서는 한 변수에 여러 자료형을 담을 수 있다. 하지만 TS에서는 기본 자료형이 아닌 object처럼 복합적인 자료형이 된다면 type이나 interface들을 선언해야한다. 이 type이나 interface들을 작성하는데도 적지 않은 시간이 소모된다.

 

유연하지 못함은 결국 생산적이지 못하다는것과도 같다. 결국 동일한 기능을 더 많은 line을 작성해야 구현할 수 있다는 의미이기에.


결론

워낙에도 'TS가 진리이고 최선의 방법이다' 라고 생각하지는 않았으나, 현업에서도 생산성을 위해 몇몇 팀에서는 TS에서 다시 JS로 돌아가는 모습을 보면서 프로그래밍 언어의 세계란 알다가도 모르겠다 라는 생각을 하게되었다.

 

나 또한 개인적으로는 타입스크립트가 더 포텐이 높은 언어라고는 생각하지만, 상술한 이유로 현업에서 JS를 사용하게 되더라도 전혀 이상하지 않을 것 같다.

 

어차피 나야 여전히 배우는 단계이기때문에 한동안은 TS를 공부해나가겠지만, 현업에서도 정해진 답이 없는만큼 둘 모두를 지속적으로 학습해나가도록 해야겠다.