TypeScript - 등장배경

ryan·2022년 5월 4일
0

동적 타입과 정적 타입의 특성

동적 타입(Dynamic Typing)

  • 컴파일 단계없이 인터프리터와 같은 코드 해석기가 코드를 라인 단위로 읽으면서 바로 코드를 실행할 때 코드 변수 타입이 정해지는 방식
  • 인터프리팅 언어들이 동적 타입을 사용하는 이유는 코드 컴파일 없이 바로 코드를 실행하기 때문
  • 흔히 스크립트 언어들이라고 불리는 언어들이 동적 타입 방식을 많이 사용함. (js, python, ruby)
  • 단점은 성능이 약간 느릴 수 있음. 자바스크립트는 반복되는 함수가 많아 질수록 성능이 좋아짐

정적 타입(static typing)

  • 타입을 코드에 명시적으로 표현하는 방식으로 코드가 실행되기 전에 타입을 정의하는 방식
  • 언어의 전용 컴파일러가 컴파일 단계에 코드 내 변수들의 타입을 분석하여 코드를 실행하기 전 기초적인 결함을 찾을 수 있음
  • 코드 내의 변수 타입이 실행 단계 이전에 정해지기 떄문에 '정적'이라는 단어를 쓴다.
  • 컴파일 과정을 반드시 거쳐야하는 단점이 있으나 기본적인 결함이 없는 결과물을 얻을 수 있다는 장점이 있음.
  • 코드 리팩토링과 같은 최적화가 되어 있어 코드의 성능을 올려줌

스크립트 언어와 컴파일 언어의 특성

스크립트 언어

  • 일련의 작업만을 수행하도록 하는 코드를 빠르게 작성하는 데에 집중이 되어 있어 컴파일 언어보다 기능도 적고 제한도 적음(자유도가 높음)

컴파일 언어

  • 스크립트 언어와 반대로 복잡한 로직을 갖는 시스템을 위해 만들어진 언어
  • 기본 기능도 많고 복잡성 해결을 위해 어느 정도의 제한을 가지고 있음
  • 중-대규모 프로젝트에 이러한 언어들이 사용됨

자바스크립트의 문제점

: 작은 규모의 개발 목적으로 설계된 언어였기 때문에 대규모 프로젝트에 도입 시 많은 문제들이 발생

일반적인 프로그램 개발 과정

코드 추가 수정 > 컴파일 > 커밋 > 코드 리뷰 > 빌드 > 배포

  • 뒷 단계로 갈수록 버그를 발견했을 때 처리하는 비용이 상승함.
  • Javascript의 경우 런타임을 실행했을 때 버그가 알 수 있는 경우가 잦음.(뒷 단계)

자바스크립트에 정적 타입 시스템을 도입

  • 코드 수정/개발단에서 엄격하게 작업을 하면 잠재적인 버그 발생을 방지할 수 있음
  • 상대적으로 문서화가 간결하고, 코드 수정 및 리팩토링에 용이함.

    facebook의 flow
    coffeeScript, purescript
    Elm, Rescript, Scala.js
    TypeScript => Java, C#의 영향을 받은 to-JS언어 등

TypeScript

  • Javascript의 확대집합(superset), 즉 'Javascript로 작성된 코드 == TypeScript 코드'가 성립됨
  • Javascript에 정적 타입 시스템을 도입한 모델
  • TypeScript로 작성된 코드를 단일 컴파일러를 사용해서 최적화된 Javascript에 코드를 만드는 방식
    • tsc : typescript 전용 컴파일러 // 이외로 SWC, ESbuild가 있음
    • tsconfig.json : typescript 컴파일러를 튜닝하기 위한 설정 파일

Typescript를 사용하는 이유

  • 동적 타입을 정적으로 선언할 수 있음
  • 타입 유추를 통해 타입 제어가 가능
  • 컴파일 시점에서 오류를 발견할 수 있음
profile
프론트엔드 개발자

0개의 댓글