クラス

型アサーション

このエントリーをはてなブックマークに追加
最終更新日 2016-12-31

型アサーションを利用すると、基底クラスの型を適切な派生クラスの型へ変換することができます。 次に示すのは型アサーションの書式です。

<型名> 単項式;

次に示すのは型アサーションの例です。

class Foo {
    public foo: string = "Foo";
}

class Bar extends Foo {
    public bar: string = "Bar";
}

function factory(type: string) {
    if (type == "Foo") {
        return new Foo;
    } else {
        return new Bar;
    }
}

var foo: Foo = factory("Bar");
if (foo instanceof Bar) {
    var bar: Bar = <Bar> foo;
}

factory() は条件によって Foo か Bar のどちらかのインスタンスを返します。 factory() には戻り値の型注釈がありませんが、 Foo と Bar の共通の代入可能な型として Foo が推論されます。 今回の例では factory() の戻り値を instanceof でチェックし、 Bar のインスタンスであれば型アサーションによって戻り値の型を Bar に変換します。