Item 7 타입이 값들의 집합이라고 생각하기

Summary

  • 타입은 ‘할당 가능한 값들의 집합’이다. 타입의 ‘범위’라고 부르기도 한다. 이 집합은 유한(boolean 또는 리터럴 타입)하거나 무한(number 또는 string)하다.

    • never은 공집합

    • extends는 ‘~에 할당 가능한’과 비슷하게, ‘~의 부분 집합’이라는 의미로 받아들일 수 있다. 서브타입이 된다.

      interface Shape {
      }
      
      interface Rectangle extends Shape {
      }
      
      Rectangle<A extends Shape>
      • 제너릭 타입에서 한정자로도 쓰이며, 여기서는 ‘~의 부분 집합’을 의미하기도 한다. (Item 14)

  • 타입스크립트의 타입은 엄격한 상속 관계가 아닌 겹쳐지는 집합(벤 다이어그램)으로 표현된다.

    • 두 타입이 서브타입이 아니면서도 겹칠 수 있다.

    • 한 객체의 추가적인 속성이 타입 선언에 언급되지 않더라도 그 타입에 속할 수 있다.

    • 타입 연산은 집합 범위에 적용된다.

      • A와 B의 인터섹션은 A 범위와 B 범위의 인터섹션(교집합)이다. 객체 타입에서는 A & B인 값이 A와 B의 속성을 모두 가짐을 의미한다.

        • & : 인터섹션 (교집합)

        • | : 유니언 (합집합)

    • ‘A는 B를 상속’, ‘A는 B에 할당 가능’, ‘A는 B의 서브타입’은 ‘A는 B의 부분 집합’과 같은 의미이다.

Last updated