TypeScript(타입스크립트) 설치 및 개요
작년에 썼던 타입스크립트 글은 사실 강의 들으면서 메모했던 필기에 가까웠기에..
약 1년반이 지난 지금 나조차도 못알아보는 글이 되어버려서... 다시 작성해보는 타입스크립트 정리!
어쩌다 여유도 생겨서 한 입 크기로 잘라먹는 타입스크립트 강의를 들으면서 부족한 부분도 채워보고자 한다~!
이 링크를 통해 구매하시면 제가 수익을 받을 수 있어요. 🤗

타입스크립트는 JavaScript의 Super-Set 언어이다.

그리고 C언어의 창시자인 앤더스 헤일스버그(위 사진) 라는 분이 만드셨다는데... 이것까지는 안중요
그렇지만 창시자가 같기때문에 타입스크립트는 자바나 C# 같은 정적 언어의 문법과 유사한 점이 많다고 한다. (이건 중요? 아마도?)
기존의 JS의 문법그대로 흡수 및 수용한 언어이고, type을 사전에 지정하는 기능을 더한 언어라고 할 수 있다.
언어들은 크게 두가지의 형태로 나뉘게 된다.

정적타입과 동적타입으로 나뉘게 되는데 각자의 특성은 아래와 같다.
let a = "string" // string
a = 123 // number

일반적인 컴파일러와 타입스크립트 컴파일 과정을 비교하면 아래와 같다

아~주 기본적인 타입스크립트를 알았다면 타입스크립트 실행 및 기본적인 옵션들도 알아야지!
요즘같은 시대에는 vite나 nextjs를 init 하면 다 기본으로 깔리긴 하지만,
옵션들이나 실행방법은 알아야지~
npm init -y
npm i typescript -g
npm i @types/node
npm i -D tsx
tsc src/index.ts
node src/index.js
tsx src/index.ts
tsx가 뭐지?
원래 브라우저나 Node.js는 TypeScript를 직접 이해하지 못해서 tsc로 변환(컴파일) 후 node로 실행해야 하는 번거로움이 있었다.
tsx는 이 과정을 한 번에 처리해 주는 도구라고 한다!
ts-node도 많이 사용했지만, 23년 10월 이후에는 Node.js LTS가 20대로 업데이트 되며 tsx위주로 사용한다고 한다. 내부적으로 esbuild라는 것을 사용해서 엄청 빠르다고 한다!
tsc --init
{
"compilerOptions": {
"target": "esnext", // 컴파일된 결과 버전
"module": "esnext", // 모듈 버전
"outDir": "dist", // 컴파일된 파일이 저장되는 루트
"strict": false, // 엄격한 타입 검사
// 타입스크립트는 모든 파일을 전역 모듈로 취급
// but export, import가 있으면 독립된 모듈로 취급
"moduleDetection": "force", // 자동으로 export {} 생성
"skipLibCheck": true // 외부 라이브러리를 설치할 때, 타입지정 검사 생략하고자 할때
"strictNullChecks": true, // 타입지정 시, null 타입 사용에 대한 여부
},
"ts-node": {
"esm": true // ts-node가 esm 모드로 실행됨
},
"include": ["src"] // src 이하에 있는 파일 컴파일
}
이 중에서 유의할 부분은 moduleDetection 인데 타입스크립트는 기본적으로 각각의 파일들을 전역요소로 인식한다! 파일이 달라도 var처럼 글로벌 스코프 선언이 되어 버리기 때문에 "moduleDetection": "force" 가 필요하다!