본문 바로가기

Develop Log/TypeScript

TypeScript 알아보기 - TypeScript란?

반응형

TypeScript

TypeScript는 Microsoft에서 개발하였으며, 2012년에 처음 공개된 자바스크립트(JavaScript)를 기반의 정적 타입 문법을 추가한 프로그래밍 언어이다.

TypeScript는 JavaScript와 완벽하게 호환되며, TypeScript를 컴파일하면 JavaScript 코드가 결과로 나오게 된다. 컴파일 시 TypeScript의 코드가 JavaScript로 변환되어 나오기 때문에 기존의 JavaScript 코드베이스를 TypeScript로 점진적으로 변환하는 것이 가능하게 된다.

 

TypeScript의 출시 배경

JavaScript는 웹에서 가장 널리 사용되는 스크립트 언어이지만, 그 동적 타입 특성과 특정 설계 결정사항 때문에 큰 규모의 애플리케이션 개발에 있어서 어려움이 있었다. 그리고 JavaScript의 빠른 발전에 따라 다양한 새로운 문법이 추가되었지만, 이를 사용하기 위해서는 브라우저의 지원이 필요한데, 모든 브라우저가 최신 JavaScript 표준을 지원하지 않는 경우도 있었다.

이런 문제점들을 해결하기 위해 Microsoft에서는 JavaScript의 수퍼셋인 TypeScript를 개발하게 되었다. TypeScript는 JavaScript의 모든 기능을 포함하면서도 정적 타입 체크와 최신 JavaScript 문법을 지원하며 이를 이전 버전의 JavaScript로 다운컴파일하는 기능을 제공해 주어 현재 많은 개발자들이 순수 JavaScript만을 이용한 개발보다는 TypeScript를 이용하여 개발을 하고 있다.

 

TypeScript의 특징

  1. 타입 안정성: TypeScript의 가장 큰 특징은 정적 타입 시스템을 제공하는 것이다. 이는 개발자에게 변수, 함수 매개변수, 객체 속성 등의 예상 타입을 지정할 수 있는 능력을 제공하고, 컴파일 타임에 타입 오류를 감지하여 런타임 에러를 주는데, 이는 코드의 안정성을 높이고, 더 이른 단계에서 버그를 잡아낼 수 있게 도와준다.
  2. 향상된 도구 지원: TypeScript는 IDE와 같은 도구에게 많은 정보를 제공하므로, 도구들이 더 나은 지원을 할 수 있게 된다. 예를 들어, 자동 완성, 리팩토링 도구, 타입 체크 등의 기능이 기존 JavaScript를 사용할 때보다 향상된다.
  3. 객체 지향 프로그래밍과의 호환성: TypeScript는 클래스, 인터페이스, 제네릭 등의 객체 지향 프로그래밍 패러다임을 완벽히 지원하고 있다. 이는 큰 규모의 프로젝트에서 코드 구조화와 재사용을 쉽게 만들어준다.
  4. 최신 JavaScript 특징 지원 및 다운컴파일: TypeScript는 ES6, ES7 등의 최신 JavaScript 특징들을 지원하며, 이를 이전 버전의 JavaScript로 다운컴파일할 수 있다. 이를 통해 개발자는 최신 JavaScript 문법을 사용하면서도 다양한 브라우저 환경에서의 호환성을 유지할 수 있다.

 

TypeScript의 단점?

  1. 학습 곡선: TypeScript는 JavaScript의 상위 집합(superset)이므로, JavaScript의 기본 구문 외에도 TypeScript의 타입 시스템, 제네릭, 인터페이스, 데코레이터와 같은 고급 기능에 대한 이해가 필요하다. 이는 특히 JavaScript에 익숙하지 않은 개발자에게 추가적인 학습 부담을 줄 수 있다.
  2. 개발 시간 증가: TypeScript는 코드 작성 시점에서 타입 체크를 수행하기 때문에, 코드를 작성하는 데 필요한 시간이 늘어날 수 있다. 즉, 코드를 빠르게 프로토타입화하거나 작은 프로젝트를 진행하는 데에는 JavaScript가 더 효과적일 수 있다.
  3. 라이브러리와의 호환성 문제: JavaScript 라이브러리를 TypeScript 프로젝트에서 사용하려면 해당 라이브러리의 타입 정의가 필요로 한다. 대부분의 인기 있는 라이브러리에는 기존 JavaScript로 구성된 라이브러리와 별도로 @types/*라는 타입 정의가 있지만, 만약 없다면 직접 작성해야 할 수도 있다. 이는 추가적인 작업을 필요로 하며, 작성된 타입 정의가 라이브러리의 업데이트에 맞춰 유지되지 않으면 문제가 될 수 있다.
  4. 추가적인 설정과 툴링이 필요: TypeScript를 사용하려면 컴파일러 설정, Babel과의 통합, ESLint 룰 설정 등 추가적인 설정과 툴링이 필요하게 되는데, 이 과정은 복잡하고 시간이 소요될 수 있다.
  5. 버전 업데이트에 따른 변동성: TypeScript는 계속 업데이트되고 있으며, 때때로 큰 변화를 가지고 있다. 이러한 변화는 기존의 코드나 학습한 내용과 충돌할 수 있으며, 이에 대응하는 것이 부담스러울 수 있다.

하지만 이런 단점들에도 불구하고 안정성, 예측 가능성, 그리고 높은 생산성을 제공하고 IDE의 자동완성, 리팩토링 도구 등을 통해 개발자의 생산성을 향상시켜주는 등 더 큰 장점들로 인해 많은 프로젝트와 기업에서 선호하고 사용하고 있다.

반응형

'Develop Log > TypeScript' 카테고리의 다른 글

TypeScript의 타입 연산자 알아보기  (0) 2023.08.19
TypeScript의 타입 알아보기  (0) 2023.07.31