---
id: [[P-Reinforce|P-Reinforce]]-AUTO-C4763A
category: "10_Wiki/💡 Topics/Programming & Language"
confidence_score: 0.90
tags: [auto-reinforced]
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Continuous Worker - 대규모 TypeScript 프로젝트의 컴파일 성능 최적화"
---

# [[대규모 TypeScript 프로젝트의 컴파일 성능 최적화|대규모 TypeScript 프로젝트의 컴파일 성능 최적화]]

## 📌 한 줄 통찰 (The Karpathy Summary)
> 대규모 TypeScript 프로젝트의 컴파일 성능을 최적화하려면 복잡한 타입 연산을 줄이고 컴파일러의 캐싱 능력을 극대화해야 합니다 [1-3]. 특히 구조를 매번 재평가해야 하는 교집합(`&`) 타입 대신 인터페이스 확장(`extends`)을 우선적으로 사용하여 평탄화(flattening) 오버헤드를 방지하는 것이 가장 핵심적인 성능 향상 전략입니다 [3, 4]. 더불어 과도하게 복잡한 유니온 타입이나, 호출 시점마다 부가 정보를 추적하는 제네릭 타입의 사용을 최소화하여 컴파일 속도 저하를 막아야 합니다 [5, 6].

## 📖 구조화된 지식 (Synthesized Content)
- **인터페이스 확장을 통한 캐싱 최적화:** `type` 선언과 교집합 연산자(`&`)를 사용한 타입 병합은 대규모 프로젝트에서 컴파일 성능을 저하시킬 수 있습니다 [4]. 교집합 타입은 사용할 때마다 재귀적으로 속성을 병합하고 계산해야 하지만, 인터페이스는 단일 평탄화된 객체 타입을 생성하며 해당 이름(캐시)을 참조하여 타입 관계를 파악합니다 [2, 3, 7]. 따라서 핵심 도메인 모델이나 API 계약 등에서는 인터페이스의 `extends`를 사용하는 것이 타입 검사 성능 향상 및 IDE 업데이트 속도 최적화에 유리합니다 [4, 8, 9].
- **유니온(Union) 타입의 복잡성 관리:** 판별 가능한 유니온([[Discriminated Unions|Discriminated Unions]])과 같은 패턴은 훌륭한 타입 안전성을 제공합니다. 그러나 대규모 코드베이스에서 유니온 타입의 형태가 너무 복잡하게 구성되면 TypeScript 컴파일 속도를 느리게 만드는 주요 원인이 될 수 있습니다 [5].
- **무거운 제네릭 및 추가 타입 검사 도구의 신중한 사용:** 잉여 속성(Excess property)을 엄격하게 감지하기 위해 제네릭 매개변수를 활용하여 모든 호출 위치(call site)에서 추가적인 타입 정보를 추적하는 기법이 있습니다 [6]. 이 기법은 강력하지만 타입 검사 성능에 부정적인 영향을 미칠 수 있으므로 신중히 사용해야 하며, 의심스러울 경우 TypeScript 프로젝트에 대한 성능 프로파일링(profiling)을 거쳐야 합니다 [6].

## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.

## 🔗 지식 연결 (Graph)
- **Related Topics:** 인터페이스 확장 (Interface Extends), 교집합 타입 (Intersection Types), 타입 캐싱 (Type Caching), 판별 가능한 유니온 (Discriminated Unions)
- **Projects/Contexts:** 대규모 코드베이스 (Large Codebases), 타입 검사 및 IDE 성능 최적화 (Type Checking and IDE Performance)
- **Contradictions/Notes:** 의도치 않은 선언 병합(Declaration Merging)의 위험성 때문에 많은 실무 팀들이 인터페이스 대신 `type`만을 사용하는 컨벤션을 선호하기도 하지만 [10], TypeScript의 컴파일 및 성능 가이드라인 측면에서는 교집합(`&`) 대신 인터페이스 확장(`extends`)을 사용하는 것이 권장되고 있습니다 [3, 4].

---
*Last updated: 2026-04-18*

---
