인터섹션 타입 (Intersection Type)

H802·2024년 10월 31일

📘 인터섹션 타입 (Intersection Type)

  • 여러 타입을 결합하여 모든 속성을 포함. type A = B & C;
  • 두 개 이상의 타입을 결합하여, 모든 타입의 속성을 포함하는 새로운 타입을 정의할 때 사용
    😀 즉, 두개의 타입을 결합> 하나의 타입 EmployeePerson으로 새로 정의해서 사용
interface Person {
    name: string;
    age: number;
}

interface Employee {
    employeeId: number;
}

type EmployeePerson = Person & Employee;

let employee: EmployeePerson = {
    name: "Alice",
    age: 30,
    employeeId: 12345
}; // 올바른 값

📘 타입을 여러 개로 나누고 인터섹션 타입을 사용하는 이유?

🖐🏻 타입을 하나로 합쳐서 사용하면 될거같은데, 왜 굳이 두개의 타입을 결합해서 새로운 타입을 만들어 사용할까?

1. 모듈화와 재사용성

타입을 별개로 정의하면, 그 타입들을 다른 곳에서 재사용 가능!

2. 유지보수

타입을 개별적으로 정의하면, 나중에 변경이 필요할 때 더 쉽게 수정 가능

3. 명확한 의도

각 타입이 무엇을 의미하는지를 명확히 구분가능하여, 코드의 가독성 향상

4. 타입 안전성

인터섹션을 사용하면 서로 다른 타입의 조합을 명확히 정의, 오류 더 잘 잡아낼 수 있음


📘 리터럴 타입과 객체타입의 교집합

  • 리터럴 타입: 교집합은 두 타입에서 공통적으로 포함된 값만 가능.
type A = '바나나' | '바닐라';
type B = '바나나' | '딸기';
type C = A & B; // C는 '바나나'만 가능
  • 객체 타입: 교집합은 두 타입의 모든 속성을 포함
interface Person {
    name: string;
    age: number;
}

interface Employee {
    employeeId: number;
}

type EmployeePerson = Person & Employee;
profile
배운 내용 정리하기 위해 쓰는 블로그

0개의 댓글