Initial Commit: Reinforced Knowledge Wiki v1.0 - Pure Origin
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
---
|
||||
id: P-REINFORCE-AUTO-4ECB5E
|
||||
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 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].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (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]]
|
||||
---
|
||||
Reference in New Issue
Block a user