개발 공부/TypeScript

220607 [TypeScript] 타입스크립트

U_D 2022. 6. 7. 21:06

타입스크립트란?

타입스크립트는 자바스크립트에 타입을 부여한 언어 또는 자바스크립트의 확장된 언어라고 볼 수 있다고 한다.

타입스크립트는 자바스크립트와 달리 브라우저에서 실행하려면 파일을 한번 변환해주어야 하는데 이 변환 과정을 우리는 컴파일(complile) 이라고 부른다.

 

하지만 타입스크립트를 보고있으면 언어라는 생각보다는 자바스크립트의 오류를 막아주는 보조역할의 느낌이 강했다. 물론 아직 공부 초입이라 그렇지만 자바스크립트를 더 보완해주기때문에 JS에서 TS로의 변화기 일어나고 있다고 생각된다.

 

왜 타입스크립트를 써야할까?

1) 에러 예방
TS를 사용하는 가장 큰 이유 중 하나는 정적 타입을 지원한다. 명시적인 정적 타입 지정은 개발자의 의도를 명확하게 코드로 기술할 수 있고 이는 코드의 가독성을 높이고 예측할 수 있게 하며 디버깅을 쉽게 할 수 있다.

2) 실행 속도
JS는 동적 타입의 인터프리티 언어이다. 이 말은 런타임(실행) 시에 타입을 결정해서 적용된다는 것인데, 이것은 '컴퓨터'에게 오류가 있는지 없는지 체크하라고 일을 맡겨버린 것과 같기 때문에 실행 속도가 당연히 오래 걸린다.

하지만 TS는 '사람'이 코드 작성 시에 오류를 체크하고, 타입을 미리 결정하기 때문에 기계가 할 일을 덜어 실행 속도가 매우 빠르다는 장점이 있다.

3) 안정성 & 협업용이성
JS는 아래와 같이 작성하였을 경우 같이 협업하는 사람이나 혹은 다른 사람이 코드를 읽을 경우 타입이 어떤 것인지 짐작하기가 어렵다. (미래의 '본인' 또한 마주했을 때 알아보기 힘들 것)

 

 

위와 같은 문제뿐만 아니라 JS는 실행 중에 버그를 찾기 때문에 테스트 때 미처 발견하지 못한 에러가 운영 중에 발견될 수도 있다.
하지만 TS는 타입을 명시할 수 있고 컴파일 시 오류를 찾기 때문에 보다 더 안정적이다라고 말할 수 있다.

(개발사가 마이크로 소프트이기 때문에 쉽게 망하지 않을거란 안정적인 측면도 있다.)

 

 

4) 슈퍼셋

TS는 JS의 슈퍼셋, 즉 JS의 +@이다. 즉, JS와는 100% 호환이 되는건 물론이며, 이 외에 클래스,인터페이스 등 객체지향 프로그래밍 패턴을 제공한다. JS의 단점은 줄여주고 대신 더 좋은 기능들을 감싼 형태라고 보면 된다.

출처: https://medium.com/sjk5766/typescript-%EB%9E%80-37b5b6a6f884

 

 

타입스크립트의 단점?

1) 초기 세팅

JS에 비해 초기 세팅이 까다롭고, 꽤 귀찮다. (컴파일 옵션, 모듈 사용 설정 등)

-> 큰 단점은 아닌거같다. 길게 보면 초기 세팅만 잘 해두면 더 안정성이 좋은 프로젝트가 된다는 것이기 때문에!

 

2) 새로운 언어

보통 자바스크립트 개발자인 경우 새로운 언어를 따로 배워 적용해야 한다는 단점이 있다.

-> 개발자의 숙명이라고 생각한다. 더 좋은 기술에 대한 공부하는 재미를 준다는 점은 단점이 아닌 장점이 아닐까?!

 

3) 더 많은 코드

타입스크립트는 자바스크립트보다 코드를 더 많이 작성해야 한다. 이것은 개발 기간이 늘어나며, 코드를 더 작성하기 때문에 가독성이 더 떨어지는 부작용도 있다.

-> 안정성과 협업의 용이성을 가져오는거라면 충분히 감당할 부분인거 같다. 쓸데없는 기간이 늘어나는것이 아닌 개발의 완성도가 늘어남에 따라 추후에는 더 기간이 단축되는 효과가 올 수 있으리라 생각한다.

 

 

 

 

 

 

 

참고 사이트
: https://joshua1988.github.io/ts/why-ts.html#%EC%99%9C-%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC-%EC%8D%A8%EC%95%BC%ED%95%A0%EA%B9%8C%EC%9A%94

: https://fomaios.tistory.com/entry/TS-%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8TypeScript%EB%9E%80