4.2 KiB
4.2 KiB
id, category, confidence_score, tags, last_reinforced, github_commit
| id | category | confidence_score | tags | last_reinforced | github_commit | |
|---|---|---|---|---|---|---|
| P-REINFORCE-AUTO-4ECB5E | 10_Wiki/💡 Topics/Programming & Language | 0.90 |
|
2026-04-20 | [P-Reinforce] Continuous Worker - 교집합 타입(Intersection Type) |
교집합 타입(Intersection Type)
📌 한 줄 통찰 (The Karpathy Summary)
교집합 타입(Intersection Type)은 여러 개의 타입을 결합하여 필요한 모든 기능을 갖춘 단일 타입을 생성하는 TypeScript의 타입 구성 문법입니다 [1].
&연산자를 사용하여 정의하며, 결합된 모든 구성 타입의 제약 조건과 속성을 동시에 만족(A AND B)해야 합니다 [2, 3]. 이를 통해 기존에 정의된 여러 객체의 구조나 기능을 재사용하여 복잡하고 확장된 타입을 유연하게 만들 수 있습니다 [1, 4].
📖 구조화된 지식 (Synthesized Content)
-
기본 개념과 활용
- 교집합 타입은 다수의 타입을 하나로 묶어, 해당 타입들의 모든 멤버를 포함하는 단일 타입을 생성합니다 [1].
- 예를 들어,
Person & Serializable & Loggable타입으로 선언된 객체는 이 세 가지 타입에 정의된 모든 속성과 메서드를 반드시 포함해야 합니다 [1]. - 이러한 패턴은 기존 타입들의 기능을 더해 확장하거나 여러 능력을 결합할 때 매우 유용하게 사용됩니다 [4].
- 집합론적 관점에서
A & B연산은 A와 B의 제약 조건을 모두 충족하는 값들의 교집합을 의미하며,A & never와 같은 연산의 결과는 항상 빈 집합인never가 됩니다 [5-8].
-
유니언 타입(Union Type)과의 차이
- 유니언 타입(
|)이 주어진 타입들 중 하나만 만족(A OR B)해도 되는 유연성을 제공한다면, 교집합 타입(&)은 결합된 모든 타입을 엄격하게 충족(A AND B)해야 한다는 근본적인 차이가 있습니다 [2, 3]. - 두 가지 타입 시스템은 상호보완적이며, 함께 조합하면 더욱 유연하고 타입에 안전한 데이터 구조를 모델링할 수 있습니다 [9, 10].
- 유니언 타입(
-
인터페이스 확장(Interface Extends)과의 비교 및 성능 고려사항
- TypeScript에서 객체 타입을 확장할 때는 교집합 타입보다는 인터페이스의
extends기능을 사용하는 것이 더 권장됩니다 [11-13]. - 인터페이스 확장은 단일한 평탄화(flattened) 객체 타입을 생성하고 속성 충돌을 명확하게 감지하며, 타입 검사 결과를 이름 기준으로 캐싱하여 컴파일 성능을 향상시킵니다 [12-14].
- 반면, 교집합 타입은 사용할 때마다 내부적으로 속성을 재귀적으로 병합하는 복잡한 계산 과정을 거쳐야 하므로 대규모 프로젝트에서 컴파일 속도를 저하시킬 수 있습니다 [12, 13, 15].
- 더욱이 교집합은 호환되지 않는 필드를 병합할 때 명시적으로 경고하기보다 조용히
never타입을 생산하거나 필드를 무시할 수 있어, 타입 안전성 측면에서도 인터페이스 확장이 더 안전한 선택으로 평가받습니다 [13, 16].
- TypeScript에서 객체 타입을 확장할 때는 교집합 타입보다는 인터페이스의
⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- 과거 데이터와의 충돌: 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
- 정책 변화: Programming & Language 분야의 자동 자산화 수행.
🔗 지식 연결 (Graph)
- Related Topics: 유니언 타입(Union Type), 인터페이스(Interface), 집합론(Set Theory)
- Projects/Contexts: API 도메인 모델 구조화 및 설정 객체(Configuration Objects) 관리, TypeScript 컴파일 성능 최적화
- Contradictions/Notes: 여러 타입을 합칠 때 교집합 타입(
&)이 흔히 사용되지만, TypeScript 공식 성능 가이드와 개발 커뮤니티에서는 객체를 확장할 경우 컴파일 캐싱 및 성능 이점, 에러 방지를 위해 교집합 타입보다interface extends의 사용을 적극적으로 권장합니다 [12, 13, 17].
Last updated: 2026-04-18
- Raw Source: 00_Raw/2026-04-20/교집합 타입(Intersection Type).md