타입스크립트 컴파일러 옵션 완벽 가이드

2025. 4. 2. 17:03프론트엔드/TypeScript(공부)

728x90

📌 컴파일러 옵션이란?

  • **타입스크립트 컴파일러(tsc)**가 코드를 어떻게 검사하고 변환할지 정의하는 설정입니다.
  • tsconfig.json 파일에 작성하며, 옵션을 조합하여 프로젝트 맞춤 설정이 가능합니다.

🗂️ tsconfig.json 생성하기

tsc --init
  • 해당 명령어를 실행하면 tsconfig.json 파일이 생성됩니다.
  • 대부분의 설정은 주석 처리되어 있으며, 필요한 옵션만 활성화해서 사용하면 됩니다.

🔧 주요 컴파일러 옵션 정리

1️⃣ include

{
  "include": ["src"]
}
  • 컴파일할 파일 경로를 지정합니다.
  • 예: src 폴더 내의 .ts 파일만 컴파일

2️⃣ target

{
  "compilerOptions": {
    "target": "ES5"
  }
}
  • 변환될 자바스크립트 버전 지정
  • 예: ES5, ES6, ESNext 등
  • 최신 문법이 하위 호환 문법으로 변환됩니다.

3️⃣ module

{
  "compilerOptions": {
    "module": "CommonJS"
  }
}
  • 사용할 모듈 시스템 지정
  • CommonJS: Node.js 환경
  • ESNext: 최신 브라우저 및 프론트엔드 툴

4️⃣ outDir

{
  "compilerOptions": {
    "outDir": "dist"
  }
}
  • 컴파일된 .js 파일의 저장 위치 지정

5️⃣ strict

{
  "compilerOptions": {
    "strict": true
  }
}
  • 타입 검사를 엄격하게 수행
  • true 설정 시 다음 항목들이 모두 활성화됨:
    noImplicitAny, strictNullChecks, strictBindCallApply, 등

6️⃣ moduleDetection

{
  "compilerOptions": {
    "moduleDetection": "force"
  }
}
  • 모든 파일을 로컬 모듈로 간주
  • export/import가 없어도 모듈로 인식

7️⃣ ts-node 옵션 (개발 중 실행 시)

{
  "compilerOptions": {
    "module": "ESNext"
  },
  "ts-node": {
    "esm": true
  }
}
  • ts-node는 컴파일 없이 .ts 파일을 직접 실행할 수 있게 도와주는 툴입니다.
  • ESM 기반 프로젝트라면 위처럼 설정 필요

📦 설정 예시

{
  "compilerOptions": {
    "target": "ESNext",           // 최신 JS 문법으로 변환
    "module": "ESNext",           // ES 모듈 사용
    "outDir": "dist",             // 결과 파일 저장 폴더
    "strict": false,              // 엄격 모드 비활성화
    "moduleDetection": "force",  // 모든 파일을 모듈로 간주
    "skipLibCheck": true         // 의존성 타입 체크 생략 (속도 ↑)
  },
  "ts-node": {
    "esm": true                   // ts-node 실행 시 ESM 모드 적용
  },
  "include": ["src"]              // src 폴더 내부만 컴파일
}

💡 skipLibCheck는 외부 라이브러리 타입 정의 검사 생략. 컴파일 속도 개선에 유리!


🧭 정리

옵션 설명

include 컴파일 대상 파일 경로
target 변환할 JS 버전
module 사용할 모듈 시스템 (CJS / ESM 등)
outDir 결과 파일 저장 폴더
strict 타입 검사 엄격도
moduleDetection 모든 파일을 모듈로 간주할지 여부
ts-node.esm ts-node로 직접 실행할 때 ESM 적용

 

728x90