minstudio

tsconfig.json 완벽 가이드

tsconfig.json은 타입스크립트 프로젝트의 컴파일러 옵션을 제어하는 두뇌입니다. 이 설정에 따라 타입 검사가 솜방망이처럼 관대해질 수도, 철통 방어처럼 엄격해질 수도 있습니다.

실무에서는 잠재적 런타임 에러를 완벽 차단하기 위해 strict: true 모드를 켜고 방어적으로 개발하는 것이 표준 베스트 프랙티스입니다.

🛡️ strict 모드 하위의 철통 방어 옵션들 "strict": true noImplicitAny 타입을 지정하지 않아 암묵적으로 'any'가 되는 상황을 완벽 차단! strictNullChecks null이나 undefined가 모든 타입에 섞여 들어가는 오류(Cannot read property) 방지! strictBindCallApply 함수의 bind, call, apply 메서드 사용 시에도 인자 타입을 엄격히 검사!
<!-- ==========================================
// 📂 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>
tsconfig.json 완벽 가이드 | Minstudio