본문 바로가기

Ecmascript/typescript

실서비스에서 타입스크립트로 포팅하며 느낀 점

자바스크립트와 리액트로 되어있던 레거시 프로젝트를 타입스크립트와 리액트로 다시 제작하고 느낀 장단점이다.

처리가 복잡한 프로젝트에서는 확실히 단점보다 장점이 더 와닿았다.

장점

  • type과 interface가 주석보다 뛰어난 개발명세서 역할을 한다.
  • 주석은 개발이 변경되도 안바꿔도 그만이지만, type은 안바꾸면 에러나므로 항상 최신 내역을 유지한다.
  • api나 url parameter처럼 서버에서 생성한건 interface, 본인이 필요해서 만든건 type으로 규칙을 정해서 관리했는데, 이런 것들이 소스만 보고도 개발명세에 대한 빠른 파악을 할 수 있게 돕는다.
  • 좀더 견고한 로직을 작성하게 강제한다.
  • 빈값(null, undefined)처리등을 하지 않으면 런타임상에서 에러를 뱉기때문에 처음부터 방어코딩을 짜게 된다.
  • 문자열 타입의 숫자와 숫자를 정확하게 구분하기 때문에 이런 쉽게 발생할 수 있는 에러를 방지한다.

단점

  • 세팅 할 게 좀 더 많다.
  • webpack, tsconfig, 글로벌 타입, jest쓴다면 jest.config까지
  • 코드량이 많아진다.
  • 단순 데이터 타입 외에도 집합개념을 통과하기 위한 헬퍼타입등을 작성해야 되서 코드량이 상당히 늘어난다.(redux와 redux-middleware등의 헬퍼함수를 만들때 체감이 큼)
  • 라이브러리 타입 처리가 까다롭다.
  • 유명한 라이브러리는 @types를 지원하나, 내가 만든 헬퍼 함수에서 라이브러리의 타입을 맞출때 까다로운 경우가 종종 있다.
    (그 라이브러리에서 제공하는 객체가 제너릭의 향연인데 그걸 또 내꺼에서 연동하다면?!)

'Ecmascript > typescript' 카테고리의 다른 글

[Error]Cannot use JSX unless the '--jsx' flag is provided  (0) 2020.12.03
공식 API 문서  (0) 2020.01.14