min
TodoList Typescript 버전으로 만든 것에 대하여... 본문
<회고록>
오늘은 TodoList을 Typescript로 변환하는 작업을 진행했다. 추가적으로 기능적 폴더 구조와 함께 React Js , Typescript를 통해 프로젝트를 만들었다. 그럼 여기서 이런 의문이 들었을 것이다. 왜 Typescript를 사용했는가? 그 이유에 대한 답을 얻기 전에 먼저 Typescript가 무엇인지를 Javascript와의 비교를 통해서 설명을 해보도록 하겠다.
- Javascript : 자바스크립트는 동적 타이핑 언어 , 즉 약한 타입의 성질을 가지고 있는 언어이다. 이와 같은 특성을 가지고 있는 언어로는 대표적으로 파이썬이 존재한다. 그렇다면 동적 타이핑 언어의 장점은 무엇일까? 동적 타이핑 언어의 장점은 코드의 생산성이 빠르다는 것이다. 우리가 예를 들어 C언어를 통해 게임을 만든다고 치자. 이대 우리는 게임에 들어가는 변수들을 지정하는데 시간을 다 쓸 것이다. 하지만 만약 파이썬을 이용한다면 어떨까? 파이썬을 이용한다면 게임에 들어가는 변수들의 타입에 신경쓸 필요 없이 굉장히 간단하게 변수를 선언할 수 있으며 게임을 만드는 로직에 집중할 수 있다. 그렇다면 동적 타이핑 언어의 단점은 무엇일까? 동적 타이핑 언어는 타입에 유연한 언어이다 보니 타입적인 부분에서는 발생하는 오류를 예측하기 힘들다. 이는 결국 디버깅을 하는데 시간이 오래걸린다는 것을 의미한다. 결국 유지보수와 에러 처리적인 부분에서 Javascript는 너무나도 취약할 수 밖에 없다.
- Typescript : 타입스크립트는 정적 타이핑 언어 , 즉 강한 타입의 성질을 가지고 있는 언어이다. 이와 같은 특성을 가지고 있는 언어로는 대표적으로 C언어가 존재한다. 그렇다면 정적 타이핑 언어의 장점은 무엇일까? 정적 타이핑 언어의 장점은 발생하는 오류의 원인을 찾기가 쉽다는 점이다. 즉 강한 타입의 언어이다 보니 타입이 맞지 않는 순간 바로 오류가 발생하여 사전에 예상치 못한 오류들을 방지 할 수 있다. 그 뿐만이 아니라 Typescript의 경우에는 오류 메시지가 정말 친절하다. 나는 사실 이점이 큰 장점이라고 생각한다. 개발자들은 사실 코드들 작성하는 시간보다 디버깅과 오류를 잡아내는 시간이 더 길다. 따라서 유지보수를 높이기 위해서는 해당 오류가 어떤 오류인지를 빠른 시내에 잡아내는 것이 굉장히 중요하다. 그리고 Typescript는 이런 부분들에 대해서 굉장히 좋은 방안을 가지고 있다고 생각한다. 그렇다면 타입스크립트의 단점은 무엇일까? 타입스크립트의 단점은 코드의 가독성과 생산성의 문제가 있다. 코드의 변수 , 함수의 인자 등에 타입을 지정하다보니 코드의 가독성이 떨어질 수 있다. 또한 코드를 작성하는 데 있어서 타입을 계속 지정해줘야 하다보니 Javascript의 장점인 생산성에도 문제가 있다고 생각한다.
- 이번 프로젝트에서는 TodoList를 만들었는데 사실상 동적 타입 언어로 만들다보니 실행하면 안되는 부분들이 실행하는 경우가 있었다. 그래서 나는 이런 부분들을 사전에 방지하기 위해서 TypeScript를 사용했다. 그뿐만 아니라 내가 이번에 TodoList 만들면서 가장 힘들었던 부분이 오류 해결과 디버깅이었다. 나는 이 부분에서 많은 시간을 할애하면서 Javascript의 장점인 코드 생산성에서 낮은 생산성을 보였다. 그래서 나는 이런 부분들을 앞서 설명한 Typescript로 해결할 수 있다고 생각하여 Typescript를 사용했다.
<깃허브 주소>
https://github.com/helloworld442/todo-project-ts-migration
'프로젝트 회고' 카테고리의 다른 글
코드 리뷰 사이트 개인 회고 1일차 (0) | 2023.08.23 |
---|---|
TodoList redux 버전에 대하여.... (0) | 2023.08.10 |
todoList Recoil 버전에 대하여... (4) | 2023.08.08 |
Todo-List 기능적 폴더 구조 ( 도매인 중심 설계 )에 대하여... (2) | 2023.08.07 |
Todo Context Api에 대하여... (0) | 2023.08.07 |