자바스크립트와 리액트로 되어있던 레거시 프로젝트를 타입스크립트와 리액트로 다시 제작하고 느낀 장단점이다.
처리가 복잡한 프로젝트에서는 확실히 단점보다 장점이 더 와닿았다.
장점
- 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 |