본문 바로가기
TypeScript

타입스크립트(TypeScript)란? 특징과 장단점

by 바투바투 2023. 1. 4.
반응형

 

타입스크립트는 MS에 의해 개발/관리되고 있는 오픈소스 프로그래밍 언어로, 대규모 어플리케이션을 개발하는데 있어 자바스크립트는 어렵고 불편하여 이에 대한 보완책으로 개발되었다. 자바스크립트의 확장버전으로 보면 된다. 

 

위키백과에서는 이렇게 정의하고 있다.

타입스크립트는 자바스크립트의 슈퍼셋인 오픈소스 프로그래밍 언어이다. 마이크로소프트에서 개발, 유지하고 있으며 엄격한 문법을 지원한다. C#의 리드 아키텍트이자 델파이, 터보 파스칼의 창시자인 Anders Hejlsberg가 개발에 참여한다. 클라이언트 사이드와 서버 사이드를 위한 개발에 사용할 수 있다. 타입스크립트는 자바스크립트 엔진을 사용하면서 커다란 애플리케이션을 개발할 수 있게 설계된 언어이다.자바스크립트의 슈퍼셋이기 때문에 자바스크립트로 작성된 프로그램이 타입스크립트 프로그램으로도 동작한다. 타입스크립트에서 자신이 원하는 타입을 정의하고 프로그래밍을 하면 자바스크립트로 컴파일되어 실행할 수 있다. 타입스크립트는 모든 운영 체제, 모든 브라우저, 모든 호스트에서 사용 가능한 오픈 소스이다.

 

특징

  • 동적인 자바스크립트 언어에 타입을 미리 부여함으로써 컴파일 시 에러를 잡을 수가 있다.
  • 자바스크립트 코드를 그대로 쓰는 것이 아니라 자바스크립트 파일을 만들어 트랜스컴파일링(transcompiling)한다.
  • ES6의 새로운 기능들을 사용하기 위해 Babel과 같은 별도 트랜스파일러(Transpiler)를 사용하지 않아도 ES6의 새로운 기능을 기존 자바스크립트 엔진(현재의 브라우저 또는 Node.js)에서 실행할 수 있음 
    • ES6란 ECMAScript의 약자이며, 뒤에 붙는 숫자는 버전을 의미한다.
    • ECMAScript란 European Computer Manufacturers Association Script의 약자로 자바스크립트를 이루는 코어 스크립트 언어다. ECMA 인터네셔널의 ECMA-262 기술 규격에 정의된 표준화된 스크립트 프로그래밍 언어로 자바스크립트 표준 규격을 의미한다.
    • 타입스크립트는 ES7이하의 표준을 포함한다. 그러므로 기존의 ES5 자바스크립트 문법을 그대로 사용할 수 있다. 
    • ES6에서는 모듈 선언과 모듈 호출 방식을 지원한다.
  • 타입스크립트에서는 네임스페이스를 지원하여 클래스가 커지고 갯수가 많아지면 유사한 기능의 클래스들을 그룹으로 구분지어야할 때 라이브러리 단위의 모듈 구성에 유리하다.

 

장점

1. 에러 예방
- 타입스크립트는 타입을 부여하므로 코드작성 시에 알맞지 않은 타입을 넣거나 타입을 넣지 않을 경우 IDE에서 오류를 띄운다. 이 덕분에 사전에 오류를 디버깅 할 수 있고, 나중에 디버깅 하는 시간을 줄여줘 생산적인 측면에서 효과적이다.

2. 안정성 & 협업용이성
- 자바스크립트는 다른 사람이 작성한 코드를 보았을 때 어떤 타입인지 짐작하기 어렵다. 또한 실행 중에 버그를 찾으므로 테스트 때 미처 발견하지 못한 에러가 운영 중에 발견될 수 있다.
타입스크립트는 타입을 명시할 수 있으므로 직관적이고, 컴파일 시에 오류를 찾으므로 보다 안정적이다.
- 자바스크립트는 동적 타입 언어(dynamic type language)이므로 런타임 속도는 빠르나 타입 안정성이 보장되지 않는다. 타입 안정성이 보장되지 않는 다는 것은 이러한 값의 종류가 잘못 전달될 경우 버그를 잡기 어렵다는 것을 의미한다. 그러므로 자바스크립트로 작성한 프로젝트가 커질 수록 디버그하기가 어려워진다.

3. 자바스크립트(ES5)의 슈퍼셋
- 타입스크립트는 자바스크립트의 확장버전이다. 자바스크립트와 100% 호환되며, 이 외에 클래스, 인터페이스 등 객체지향 프로그래밍 패턴을 제공한다.

4. 정적 타입 지원
- 자바스크립트는 변수나 반환값의 타입을 사전에 지정하지 않는 동적 타이핑(Dynamic Typing)을 지원하지만, 코드상으로 어떤 타입의 인수를 전달해야하는지, 어떤 타입의 반환값을 리턴해야하는지 명확하지 않아 파악하기 어렵다.
타입스크립트의 정적 타이핑(Static Typing)에 따라 작성하게 되면 컴파일 단계에서 오류를 포착할 수 있고, 타입이 명시적으로 보이므로 개발자의 의도를 파악하기 쉽다이는 코드의 가독성을 높이고 디버깅을 쉽게 한다.

 

단점

1. 초기세팅
- 자바스크립트에 비해 초기에 셋팅이 까다롭다. (컴파일 옵션, 모듈 사용 설정 등)


2. 더 많은 코드
- 타입스크립트는 자바스크립트 보다 더 많은 코드를 작성해야한다. 이는 개발 기간이 늘어나고, 많은 양으로 인한 가독성이 떨어질 수 있다.

 

결론

유지보수 측면(생산성)에 있어서 타입스크립트가 좋다.

현재 사이드프로젝트로 '나의 버킷리스트북'을 만들고 있는데, API통신을 경험해보고자 restapi로 서버측 컨트롤러를 구현하였고 이 api를 받을 프론트단을 구성해야 한다. javascript로 구현을 할까 했으나, 요즘 typescript를 사용하여 구현한 코드들이 많이 보여서 typescript로 구현해보려고 한다. 그러면서 타입스크립트가 어떤 것인지, 어떤 점에서 괜찮은지 궁금하여 조사해봤는데 자바스크립트를 포함한 슈퍼셋이라면 처음 배우는데 있어 더 포괄적인 영역을 배우는 것이므로 나에게 있어 너무 좋은 경험이 될 것 같다. 

반응형
LIST