曖昧さの解決

Flexでコードを書いていてはまったときのメモ。

package info.o440 {
  class Shape {
    public function area() : Number {
        throw IllegalOperationError("...");
    }
  }

  class Circle extends Shape {
    public override function area(): Number {
        ...
    }
  }
  
  class Square extends Shape {
    public override function area(): Number {
        ...
    }
  }
}

というのがあって、mxmlファイルで

private function getArea( shape: Shape ) : Number
{
  return shape.area();
}

こうしていたら、

1061: 未定義である可能性のあるメソッド area を、静的型 flash.display:Shape の参照を使用して呼び出しました。

っていうエラーが出て、小一時間も悩んでしまった。
結局、Shapeと指定しただけだと、info.o440:Shapeじゃなくてflash.display:Shapeを参照してしまっていた、という問題だった。

private function getArea( shape: info.o440.Shape ) : Number
{
  return shape.area();
}

これで解決。エラーの説明文章はよく読もう。今回は、「静的型」というキーワードの後ろを見てなかったのが原因。
あー情けない。