3.5.5 공통 기반 타입(Common Base Type)

3.5.5 공통 기반 타입(Common Base Type)

여러 타입의 집합이 주어졌을 때, 공통 기반 타입(common base type) 은 그 집합의 모든 타입이 유니파이되는 타입이에요:

class Base {
  public function new() {}
}

class Child1 extends Base {}
class Child2 extends Base {}

class Main {
  static public function main() {
    var a = [new Child1(), new Child2()];
    $type(a); // Array<Base>
  }
}

Base가 언급되지 않았는데도 Haxe 컴파일러는 Child1Child2의 공통 타입으로 Base를 추론해냅니다. Haxe 컴파일러는 다음 상황에서 이런 유니피케이션을 사용해요:

  • 배열 선언(Array declarations)
  • if/else
  • switch의 case들

출처: Common Base Type

본문

공통 기반 타입의 개념

공통 기반 타입은 집합 내 모든 타입이 유니파이되는 하나의 타입이에요. [new Child1(), new Child2()]처럼 서로 다른 하위 타입의 배열을 만들면, 컴파일러는 공통 상위 타입인 Base를 추론해 Array<Base>를 만들어요.

사용 상황

공통 기반 타입 유니피케이션은 배열 선언, if/else의 브랜치, switch의 case들처럼 여러 타입이 결합되는 상황에서 사용됩니다.

더 알아보기