tsconfig.json 완벽 가이드
tsconfig.json은 타입스크립트 프로젝트의 컴파일러 옵션을 제어하는 두뇌입니다. 이 설정에 따라 타입 검사가 솜방망이처럼 관대해질 수도, 철통 방어처럼 엄격해질 수도 있습니다.
실무에서는 잠재적 런타임 에러를 완벽 차단하기 위해 strict: true 모드를 켜고 방어적으로 개발하는 것이 표준 베스트 프랙티스입니다.
<!-- ==========================================
// 📂 tsconfig.json (실무 표준 베스트 프랙티스 설정)
// ========================================== -->
<script>
{
"compilerOptions": {
/* 1. 언어 및 환경 세팅 */
"target": "ES2022", // 컴파일될 JS의 버전 (최신 브라우저 타겟)
"module": "ESNext", // 최신 ES 모듈 시스템 사용 (import/export)
"moduleResolution": "node", // Node.js 방식의 파일 경로 탐색 방식
"lib": ["DOM", "DOM.Iterable", "ESNext"], // 사용할 내장 라이브러리 타입
/* 2. 엄격한 타입 검사 (가장 중요) */
"strict": true, // 아래의 모든 strict 관련 옵션들을 한번에 켭니다.
// "noImplicitAny": true, // (strict 활성화 시 자동 켜짐) 암묵적 any 금지
// "strictNullChecks": true, // (strict 활성화 시 자동 켜짐) null/undefined 방어
"noUnusedLocals": true, // 선언해놓고 안 쓰는 지역 변수가 있으면 에러 표시
"noUnusedParameters": true, // 함수에 받아놓고 안 쓰는 파라미터가 있으면 에러 표시
"exactOptionalPropertyTypes": true, // ? 선택적 속성에 명시적 undefined 할당 방지
/* 3. 파일 및 출력 제어 */
"outDir": "./dist", // 컴파일된 JS 파일들이 저장될 폴더 경로
"removeComments": true, // 빌드 시 주석을 모두 제거하여 파일 용량 최소화
"esModuleInterop": true, // CommonJS 모듈을 ES 모듈처럼 쉽게 가져오게 허용
"skipLibCheck": true, // node_modules 내의 .d.ts 파일 검사 생략 (빌드 속도 향상)
"forceConsistentCasingInFileNames": true // 대소문자가 다른 파일명 참조 방지
},
"include": ["src/**/*"], // 컴파일할 대상 파일 경로
"exclude": ["node_modules", "dist", "**/*.spec.ts"] // 컴파일에서 제외할 파일
}
</script>