타입스크립트 컴파일러 옵션 완벽 가이드
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
'프론트엔드 > TypeScript(공부)' 카테고리의 다른 글
| 타입 별칭과 인덱스 시그니처: (0) | 2025.04.04 |
|---|---|
| 객체 타입 정의 (0) | 2025.04.04 |
| 원시 타입과 리터럴 타입 (0) | 2025.04.04 |
| 자바스크립트 모듈과 ES 모듈 시스템(ESM) 완벽 정리 (0) | 2025.04.02 |
| 정적 vs 동적 vs 점진적 타이핑, 그리고 TypeScript의 동작 원리 (0) | 2025.04.02 |