본격적으로 RN을 사용하기 전, 기존 사용하던 JS의 단점을 보완하기 위한 방법으로 TS를 사용하게 되었습니다.
또한 React Native 프로젝트 생성 이전 template 명령어 등을 활용하면 자유롭게 tsx 문법을 사용할 수 있는 프로젝트를 만들 수 있습니다.
expo의 경우 init 단계에서 고를 수 있는 선택지를 제공합니다.
각종 환경 세팅은 연습단계에서 큰 부담이 없지만, 사실 중요한 점은 사실 제가 TS를 처움 사용해본다는 것이긴 합니다.
오늘 생각했던 것 중 포스트에 올릴만한걸 써보겠습니다.
위 두 문서 외에도 여러 글을 읽어보았는데 TS는 JS + compiler 조합으로 생각할 수 있습니다.
그 외에 이것저것 있지만 결과적으로는 언어 자체의 타입 변환이 이루어진다는 점입니다.
공대생이라면 자주 보는 단어인 static - dynamic, 정적, 동적 형태의 변화가 이루어집니다.
이제는 해당 키워드를 보면 이것저것 검색해볼 때 봤던 C++
vs JS(바닐라)
가 생각이 나네요.
정적 타입의 언어와 동적 타입의 언어의 차이는 compiler와 변수형 선언이 결정합니다.
맛보기만 했던 C++
에서의 int, char, long, double, etc...
와 JS의 var, let, const
는 엄연히 다른 방식의 선언입니다.
종합한 생각의 흐름은 다음과 같습니다.
플랫폼에 따라 내부 엔진에서 컴파일(JIT)을 진행한다.
ex) chrome V8, 스파이더몽키
JS는 6가지의 data type이 존재한다. (object, function, null 포함 9개)
그러나 선언 당시에 c++과 같이 number a; string b; 등의 방식으로 선언하지 않는다.
따라서 JS는 동적 타입 언어로 분류할 수 있다.
TS를 사용했을 때, JS는 compiler를 가지게 되며 변수형을 정의할 수 있다.
이 과정을 통해 TS는 정적 타입으로 변경된 JS로 이해할 수 있다.
정적 타입의 언어는 비교적 한 층의 valid layer인 compile 단계가 존재하므로 안정성이 높고, 변수형을 선언하기에 비교적 빠른 실행속도를 가질 수 있다.
동적 타입의 언어는 개발 속도에서의 큰 장점을 갖지만, 안정성과 실행 속도를 어느 정도 포기해야 한다.
현재 나의 상황에서 가장 주목해야 할 부분은 기존 바닐라에 비해 향상된 코드 안정성이다.
tsx로 작성된 React Native app은 babel compile, TS compile 단계를 거치게 된다.
7번과 오해의 소지가 있을지도 모르지만 통상적으로 알려진 정보일 뿐입니다.
무조건 C++이나 Java가 JS에 비해 빠르다거나 하는 편견이 아닙니다.
속도를 결정하는건 최적화와 코드 퀄리티가 큰 영향을 끼치기에 제 레벨에서는 어느 언어로 작성하든 동일하니 일반적인 정보로 이해하고 넘어갔다고 봐주시면 됩니다.
그럼 이것저것 차이에 대해 알아봤으니 사용도 해봐야지 않을까요?
그러나 안타깝게도 코드는 없습니다.
제가 사용하고 연습한 코드의 예시를 여기에 적는 것이 큰 의미가 없다는 생각이 들었기에 당분간 기초 내용을 학습하는 TIL에 코드는 없을 예정입니다.
다만 앞으로 핸드북을 통해 어떤 부분을 중점으로 생각할지 미리 한 번 적어둔 것은 있습니다.
styled components와 같이 변수형태로 style을 정의하는 RN 프로젝트에서 리터럴 타입의 활용
인터페이스 필드 추가가 끼칠 영향 : type vs interface
union 조합
제네릭 들여다보기
declare, module, import, export
최종. react, react-native 라이브러리 뜯어보기
이전 프로젝트부터 계속 궁금했는데 TS를 배울 시간이 없어 미루고 있었습니다. 꼭 공부해서 뜯어보겠습니다.
오늘 하루를 온전히 투자하지 못해서 핸드북 정독은 어려웠던 것 같습니다.
React Native를 하면서 차차 TS도 깊게 공부할 것 같은데, 사실 현실은 한 줄 치는 것도 익숙치 않아 핸드북을 당분간은 좀 달고 살지 않을까 싶습니다.
그래도 시간 나는 대로 계속 주입하다 보면 알고리즘도 TS로 풀 수 있는 날이 올 것 같습니다.
그럼 이만 글을 마치도록 하겠습니다. 감사합니다.