JavaScript

JavaScript - 타입스크립트란 무엇일까? (기본편)

인어공쭈 2024. 9. 28. 09:55

나는 모든 프로젝트를 타입스크립트를 기반으로 개발을 하고 있다.

따라서 이번엔 타입스크립트에서 대해서 알아보도록 하자.!!

 

 

타입스크립트의 개념

타입스크립트(TypeScript)는 마이크로소프트가 개발한 자바스크립트의 상위 확장 언어이다. 주된 특징은 정적 타입(Static Type) 검사와 최신 자바스크립트 기능을 사용할 수 있게 해주는 것이다. 자바스크립트의 단점을 보완하고, 대규모 애플리케이션을 개발할 때 코드의 가독성과 안정성을 높이기 위해 등장하였다.

타입스크립트가 등장하게 된 배경

자바스크립트는 웹 개발에서 널리 사용되는 언어로, 유연성과 쉬운 사용성 덕분에 인기를 얻었다. 하지만 프로젝트의 규모가 커질수록 코드의 복잡도가 증가하고, 타입 검사와 같은 기본적인 기능이 부재하여 런타임 에러가 발생할 확률이 높아지는 문제가 있었다. 이러한 문제점을 해결하기 위해 정적 타입을 도입하여 코드의 안정성을 높이고, 오류를 사전에 방지할 수 있도록 도와주는 타입스크립트가 등장하였다.

타입스크립트와 자바스크립트의 차이점

타입스크립트와 자바스크립트의 가장 큰 차이점은 정적 타입 시스템이다. 자바스크립트는 동적 타입(Dynamic Type)을 사용하여 실행 시점에 타입이 결정되지만, 타입스크립트는 정적 타입을 사용하여 컴파일 타임에 타입을 확인한다. 이로 인해 타입스크립트는 다음과 같은 차별점을 가진다:

  • 정적 타입 검사: 타입스크립트는 변수, 함수의 인자 및 반환값에 타입을 지정하여 컴파일 단계에서 타입의 일관성을 검사한다.
  • 코드 자동 완성 및 인텔리센스 지원: 타입이 명시되기 때문에 IDE(통합 개발 환경)에서 코드 자동 완성, 타입 추론, 오류 감지를 더 효과적으로 지원한다.
  • ES6+ 기능 사용: 타입스크립트는 최신 자바스크립트 문법을 포함하고 있으며, 컴파일을 통해 호환성이 없는 환경에서도 실행할 수 있게 해준다.

타입스크립트가 필요한 이유

타입스크립트를 사용하면 개발 단계에서 버그를 사전에 방지할 수 있고, 코드의 가독성과 유지보수성을 높일 수 있다. 특히 협업이 많은 프로젝트나 대규모 애플리케이션에서는 정적 타입의 존재가 코드의 일관성과 명확성을 보장해준다. 예를 들어, 함수의 인자 타입이 고정되어 있으면 해당 함수가 잘못된 인자를 받을 경우 컴파일 단계에서 오류가 발생하여 런타임 에러를 방지할 수 있다.

타입스크립트를 사용하면 어떤 점이 좋아질까?

  • 개발 효율성 증가: 정적 타입을 사용하여 타입 관련 오류를 사전에 발견하고, 코드 자동 완성 및 리팩토링을 쉽게 수행할 수 있다.
  • 가독성 향상: 변수와 함수에 명확한 타입을 지정하여 코드의 의도를 더 잘 표현할 수 있다.
  • 코드 품질 향상: 코드의 일관성과 안정성을 보장할 수 있어 유지보수가 용이하다.

타입스크립트의 컴파일 과정

타입스크립트의 컴파일러는 tsc(TypeScript Compiler)를 사용하여 다음과 같은 과정을 거친다:

  1. 타입 검사: 코드 내의 타입 정의와 할당된 값의 타입을 검사하여 오류가 있는지 확인한다.
  2. 트랜스파일링: 타입스크립트 코드를 자바스크립트 코드로 변환한다.
  3. 출력: 지정된 버전의 자바스크립트(ES5, ES6 등)로 변환된 코드를 생성한다.

이 과정을 통해 타입스크립트 코드는 런타임 이전에 타입 오류를 발견하고, 다양한 환경에서 호환되는 자바스크립트 코드로 변환된다.

더보기

컴파일러란 무엇일까?

 

컴파일러는 고수준 언어로 작성된 코드를 컴퓨터가 이해할 수 있는 저수준 언어(기계어)로 변환하는 프로그램이다. 즉, 사람이 작성한 코드를 컴퓨터가 실행할 수 있도록 번역하는 역할을 한다. 타입스크립트의 경우, .ts 확장자를 가진 파일을 자바스크립트 코드로 변환하는 작업을 수행한다.

런타임이란 무엇일까?

 

런타임(Runtime)은 프로그램이 실행되는 시점을 의미한다. 즉, 코드가 작성되어 실행되는 동안의 상태를 나타내며, 프로그램이 메모리에서 실행되어 특정 작업을 수행하는 단계이다.

 

인터프리터 언어란 무엇일까?

 

인터프리터 언어는 컴파일러와 달리, 코드를 한 줄씩 읽고 실행하는 방식을 취하는 언어이다. 자바스크립트, 파이썬 등이 대표적인 인터프리터 언어이며, 실행 속도가 컴파일 언어에 비해 느리지만 코드 수정 후 즉각적인 결과를 확인할 수 있다.

 

컴파일 언어와 인터프리터 언어의 차이점

 

컴파일 언어는 전체 코드를 기계어로 번역한 후 실행되므로 실행 속도가 빠르지만, 코드 수정 후 재컴파일이 필요하다. 반면, 인터프리터 언어는 코드의 각 줄을 실행 시점에서 해석하므로 수정 후 즉각적인 실행이 가능하다. 이로 인해 컴파일 언어는 주로 대규모 프로젝트에, 인터프리터 언어는 스크립팅이나 프로토타입 개발에 많이 사용된다.

 

타입 추론이란 무엇일까?

타입 추론(Type Inference)은 명시적으로 타입을 지정하지 않아도, 컴파일러가 코드의 문맥을 통해 변수의 타입을 자동으로 추론하는 기능이다. 예를 들어, let count = 10과 같은 코드에서 count 변수의 타입은 number로 추론된다. 이를 통해 개발자는 타입을 일일이 명시하지 않아도 코드의 가독성을 유지하면서 타입 안전성을 확보할 수 있다.

 

never 타입의 목적은 무엇일까?

never 타입은 절대 도달할 수 없는 코드 경로를 나타낸다. 예를 들어, 함수가 항상 예외를 던지거나 무한 루프를 돌 때 반환 타입으로 never를 지정할 수 있다. 이를 통해 해당 코드가 결코 정상적으로 종료되지 않음을 명시적으로 표현할 수 있다.

반응형