타입스크립트는 런타임이 존재하지 않고 컴파일러가 존재한다. ts -> js로 변환하여 실행할 수 있다.
tsc
란, typeScript Compiler의 약자로, typeScript는 정적 타입을 지원한다. tsc
명령어를 사용할 수 있는 방법은 ts컴파일러(typescript패키지)를 설치하고 올바른 환경 설정을 하는 것이다.npm install --save-dev typescript
npx tsc index.ts
가 있다.npx
: node.js의 패키지 관리자인 npm
과 함께 제공되는 도구로 프로젝트의 실행 범위(scope)를 자동으로 설정해 주는 역할을 한다. npm install -g typescript
tsc
명령어를 사용할 수 있다.tsc index.ts
// index.ts
let str:string = "hihi~";
console.log(str);
// index.ts 파일 실행 명령어
tsc index.ts // ts가 전역에 설치된 경우
npx tsc index.ts // ts를 프로젝트별로 관리하는 경우
위의 코드를 실행한다고 가정할 때, type script를 실행하기 위해선 브라우저가 ts를 읽지 못하기 때문이다. 런타임 환경이 이해할 수 있는 언어는 javaScript로 웹 브라우저는 js만을 이해하고 실행할 수 있다.
Runtime?
- 프로그램이 작성된 코드를 해석하고 실행하는 시점
- 일반적으로 프로그래밍에서 말하는 런타임 에러는 이 단계에서 발생하는 에러를 의미한다.
Compile time
- 컴파일 타임은 코드를 컴파일러가 읽고 이해하여 실행 파일을 생성하는 시점
여기서 컴파일러라는 것은 좀 애매하지만 (관념상)
그건 제외하고서 이야기 해보자면
TS 이야기를 하면서
런타임/컴파일타임을 이야기 하는 것은
JS 가 스크립트 언어 이기 때문임
일반적으로 스크립트 언어들 (JS, Python) 등은 모두
"런 타임"에 "기계어" 로 해석되어 실행되는 인터프리터 언어들임 (JAVA 포함)
C/C++/C# 등은 컴파일 언어인데
컴파일 언어들은
"컴파일 타임"에 "기계어"로 해석되어 실행 할 수 있는 상태가 됨. (실행은 언제 하든 노상관)
"컴파일 에러" 는 컴파일 시간에 잡아 낼 수 있는
문법적인 에러 같은 것을 말하며,
"런 타임" 에러는
러닝 상태가 되어서 발생하는 에러로
개발 언어와 상관없음.
예를 들어 정수 2개 입력을 받아서 나누는 프로그램이 있을 때
10 나누기 0을 시킨다면
런타임에 에러가 나게 됨.
JS 는 "런타임" 에러만 있기 때문에
TS 라는 것이 나옴, 실행 전에 에러를 잡아 내기 위해서. "컴파일" 시간을 만들어 버린거임
물론 JS 의 많은 버젼을 지원할 수 도 있고 하는 기능이 있지만 ...
실행 전에 에러를 잡아서 생기는 이득은 굉장히 큼으로 개발 비용 단축에 영향이 있음.