type A = string | boolean;
    type B = boolean | number;
    type C = A & B;
    // type C = boolean
    
    type D = {} & (string | null);
    // type D = string
    
    type E = string & boolean;
    // type E = never
    
    type F = unknown | {};
    // type F = unknown
    type G = never & {};
    // type G = never
    

    타입 CAB의 교집합이라고 생각해도 됩니다. 따라서 boolean이 됩니다.

    타입 D{}string | null의 교집합입니다. {}에는 string이 포함되나 null은 포함되지 않습니다. 따라서 Dstring이 됩니다.

    타입 E처럼 서로 간에 겹치는 것이 없다면 never가 됩니다.

    타입 FG처럼 unknown과의 | 연산은 무조건 unknown이고, never와의 & 연산은 무조건 never가 됩니다. 이는 집합의 성질과 동일합니다. 전체집합과의 합집합은 항상 전체집합이고, 공집합과의 교집합은 항상 공집합입니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.