---
id: P-REINFORCE-AUTO-795BA0
category: "[[10_Wiki/💡 Topics/Programming & Language]]"
confidence_score: 0.90
tags: [auto-reinforced]
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Continuous Worker - 교집합 타입 (Intersection Types)"
---

# [[교집합 타입 (Intersection Types)]]

## 📌 한 줄 통찰 (The Karpathy Summary)
> 지식 요약 정보 추출 중...

## 📖 구조화된 지식 (Synthesized Content)
- **기본 개념 및 동작 원리:** 교집합 타입은 다수의 타입을 결합하여 하나의 타입으로 만듭니다. 예를 들어, `Person & Serializable & Loggable` 타입의 객체는 이 세 가지 타입이 가진 모든 멤버를 포함하게 됩니다 [1]. 집합론적 관점에서 `&` 연산자는 단순한 객체 형태의 결합이 아니라 '값 집합(value sets)'의 교집합을 의미하며, 결합된 모든 제약 조건을 동시에 만족하는 대상들의 집합을 나타냅니다 [4].
- **인터페이스 확장(Interface Extends)과의 비교 및 성능:** TypeScript는 객체 타입을 결합하거나 확장할 때 교집합 타입보다 인터페이스의 `extends` 기능을 사용하는 것을 권장합니다 [6, 7]. 인터페이스는 단일한 평면 객체 타입을 생성하고 그 이름을 기반으로 관계를 캐싱하여 컴파일 성능을 최적화합니다 [6, 8-10]. 반면, 교집합 타입은 사용될 때마다 매번 구조를 재귀적으로 병합하고 평가해야 하므로 대규모 프로젝트에서는 컴파일 속도 저하의 원인이 될 수 있습니다 [6, 10].
- **타입 충돌 처리의 차이점:** 두 타입을 결합할 때 호환되지 않는 속성이 존재하는 경우, 인터페이스 상속은 개발자에게 명시적인 에러를 발생시켜 실수를 방지합니다 [9, 11]. 반면 교집합 타입은 충돌하는 속성을 조용히 처리하여, 그 결과로 절대 존재할 수 없는 `never` 타입을 생성해버리는 특징이 있습니다 [9, 11].
- **실용적 활용:** 교집합 타입은 여러 출처에서 기능을 모아와야 할 때 유용합니다. 예를 들어 일관된 에러 처리 타입을 기존의 특정 네트워크 응답 타입에 결합하거나, `User` 타입에 `AdminPermissions` 속성을 더해 `AdminUser`를 생성하는 식의 모델링에 사용됩니다 [3, 12].

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

## 🔗 지식 연결 (Graph)
- **Related Topics:** [[유니언 타입 (Union Types)]], [[인터페이스 (Interfaces)]], [[구조적 타이핑 (Structural Typing)]]
- **Projects/Contexts:** [[TypeScript 컴파일러 성능 최적화]], [[객체 타입 조합 및 확장]]
- **Contradictions/Notes:** 교집합 타입(`&`)은 유연하게 여러 객체를 결합할 수 있는 수단이지만, 성능 최적화와 명시적 충돌 에러 감지의 이점 때문에 TypeScript 공식 가이드나 성능 가이드라인에서는 가능한 경우 인터페이스 확장(`extends`)을 더 우선적으로 사용할 것을 권장합니다 [6, 7, 9].

---
*Last updated: 2026-04-18*
- Raw Source: [[00_Raw/2026-04-20/교집합 타입 (Intersection Types).md]]
---
