Intersection
두 개 이상의 타입을 합쳐 새로운 타입을 만드는 것을 말합니다.
Intersection은 '&' 기호를 사용하여 타입을 결합합니다. 이것은 여러 타입의 속성을 모두 갖는 새로운 타입을 생성하는 데 사용됩니다.
간단한 예를 들어보겠습니다.
아래의 두 인터페이스가 있다고 가정해 봅시다.
interface Human{
name: string;
age: number;
}
interface Contacts{
phone: string;
address: string;
}
그리고 Intersection을 사용하여 새로운 타입을 만들어봅시다.
type HumanAndContacts = Human & Contacts;
let humanAndContacts: HumanAndContacts = {
name: '누구세연',
age: 7,
phone: '01012341234',
address: '서울시'
};
HumanAndContacts는 Human과 Contacts의 속성을 모두 가지는 타입입니다.
만약 정의된 Human과 Contacts 속성 중 하나라도 들어가지 않는다면 어떻게 될까요??
예를 들어, address를 제거해 보겠습니다. 아래와 같이 에러가 발생하는 것을 확인할 수 있습니다.

'humanAndContacts' is declared but its value is never read
humanAndContacts라는 변수를 선언했지만 해당 변수의 값을 사용하지 않은 경우의 발생하는 에러입니다.
두 인터페이스에 정의된 필드를 모두 입력해줘야 합니다.
만약 Primitive 타입들을 Intersection으로 선언하면 어떻게 될까요??
Primitive 타입을 인터섹션으로 선언하는 경우, 해당 타입들의 교집합을 나타내는 새로운 타입이 생성됩니다.
예를 들어, number와 string의 인터섹션은 never 타입이 됩니다.

왜냐하면 number와 string을 동시에 만족하는 값은 없기 때문입니다.
Intersection을 사용할 때는 각 타입의 교집합이 될 수 있는 경우에 대해서만 유효한 타입이 생성됩니다.
일반적으로 Primitive 타입끼리는 Intersection은 사용하지 않는 것이 일반적입니다
'Backend > TypeScript' 카테고리의 다른 글
| [TypeScript] 함수 정의하기 (0) | 2023.12.16 |
|---|---|
| [TypeScript] Narrowing(내로잉) (1) | 2023.11.27 |
| [TypeScript] Union (0) | 2023.11.08 |
| [TypeScript] Casting (캐스팅) (0) | 2023.11.08 |
| [TypeScript] Type Interface (타입 유추하기) (0) | 2023.11.05 |