Javascript

Typescript 써야할까? :: 마이구미

mygumi 2017. 9. 9. 01:19
반응형

이 글은 Typescript 도입 과정 중 일어난 경험을 통해 작성된다.

Typescript 도입을 고민한다면, 참고하면 좋을 것이다.

개인적인 견해임을 참고바란다.

참고한 링크 - the shocking secret about static types


본인은 프론트 쪽을 Vue.js를 도입한 후, 서버쪽을 구현하기에 앞서 고민했다.


"서버 쪽도 새로운 시도를 해보면 어떨까?"


그 결과 Typescript 도입을 고민해보았다.

요즘 Typescript 사용량에 있어서도, Angular 영향이 크더라도 증가하는 추세이다.


그렇다면 도대체 Typescript란 무엇인가?


Typescript는 MS에서 만든 자바스크립트의 상위 언어로써, 서로 다른 언어가 아니다.

큰 차이는 정적 타입과 동적 타입이라고 볼 수 있다.



포함 관계는 위 그림과 같이 표현할 수 있다.


그렇다면, Typescript는 왜 나온건가?


자바스크립트를 대체하기 위해 나온 것이 아닌, 보완하기 위해 나온 언어이다.

하나의 예로 자바스크립트는 동적 타입으로써, 타입에 대해 관대하다는 것을 알고 있다.

그로 인해, 많은 오류를 초래할 수 있다.

타입 체크, interface 지원 등으로 인해 Typescript는 대규모 프로젝트에 좀 더 적합한 언어가 될 수 있다.


본인은 왜 Typescript를 왜 도입하려고 했는가?


본인은 C++이나 JAVA를 먼저 배우지 않고, 자바스크립트를 먼저 배워 OOP에 대해 약한 면이 있다.

그렇기에, 자바스크립트에서 부족한 OOP 구현 능력 향상 및 타입 체크를 보완하기 위해 Typescript 도입을 고민했다.

하지만 확실한 도입 결정을 하지 못한 상태로 개발을 진행했다.


왜 Typescript 도입에 대해 확실한 결정을 내리지 못했는가?


결국 Typescript가 컴파일되면 Javascript가 된다.

그런 면에서 Typescript를 쓴다면 확실한 이유가 있어야한다.

크게 3가지를 다뤄보자.


  1. 타입 체크
  2. OOP 지향을 통한 이점
  3. 써드파티 개발 시 유용함


하나의 이유로 정적 타입을 위해 쓴다고 가정해보자.


정적 타입 언어는 타입에 대한 오류를 줄일 수 있는가?


물론 정적 타입이 동적 타입보다는 타입 오류를  줄인다고 볼 수 있다.

하지만 이것은 확실히 "그렇다" 라고 말하기 힘들다. (하지만 분명 확실히 타입에 오류의 차이는 체감상으로 크다)

그렇기에 타입 체크에 대한 대안으로는 테스트 기법인 TDD가 더 적합하다.


그렇다면 OOP을 위해 쓴다고 가정해보자.


순수 자바스크립트보다 OOP를 지향하는가?


그렇다. interface와 같은 구현으로 자바스크립트보다 OOP를 지향하며 개발할 수 있다.

그에 따라 확장성, 편리성, 생산성 등을 높일 수 있다.


써드파티 개발 시 왜 유용한가?


선언 파일(.d.ts)을 통해 써드파티 개발 시 높은 통찰력을 줄 수 있다.


이로 인해, 2번과 3번의 이유는 납득할 수 있다.

하지만 결론은 Typescript 도입을 포기했다.

이유는 다음과 같다.


첫번째는 타입 체크의 대안은 TDD를 이용하는 편이 효율적이라는 것으로 판단했다.


두번째는 환경 셋팅과 코드 구현에 있어, 기존 자바스크립트 개발보다 훨씬 느려졌다. (구조가 잡히면 훨씬 빠를 수 있다)

본인은 스타트업이기 때문에, 개발 속도도 중요한 요소이다.


세번째는 Typescript에 대한 가능성에 대한 의구심이다.

현재 ES6 문법이 자리를 잡았다고 볼 수 있다.

Vue.js도 ES6를 통해 구현되었고, Node.js 또한 완벽히 ES6 지원되지는 않았지만, 계속해서 진행중인 것을 알 수 있다.

관련 링크 - Node.js 공식문서



완벽하지는 않지만, 계속해서 ES 버전이 올라가고 있다.

현재는 8까지 릴리즈된 상태이다.

이러한 상황에서, Typescript 갖는 이점을 ES에서도 충분히 나올 것이라 기대한다.

그래도 Typescript 대해 굉장히 긍정적이고 매력적이다. 충분히 시간이 투자할 만하다.

반응형