TypeScript でのクラス型チェック 質問する

TypeScript でのクラス型チェック 質問する

ActionScriptでは、実行時に型を確認するために演算子:

var mySprite:Sprite = new Sprite(); 
trace(mySprite is Sprite); // true 
trace(mySprite is DisplayObject);// true 
trace(mySprite is IEventDispatcher); // true

TypeScript を使用して、変数 (extends または) が特定のクラスまたはインターフェースであるかどうかを検出することは可能ですか?

言語仕様ではこれについて何も見つけられませんでした。クラス/インターフェースを操作するときにはそこにあるはずです。

ベストアンサー1

4.19.4 インスタンスオブ演算子

このinstanceof演算子では、左のオペランドが Any 型、オブジェクト型、または型パラメータ型であること、右のオペランドが Any 型または 'Function' インターフェース型のサブタイプであることが必要です。結果は常にブール プリミティブ型になります。

だから、

mySprite instanceof Sprite;

この演算子は ActionScript にもあります。ただし、ここでは使用しないでください。

ActionScript 3.0 で新しく追加された is 演算子を使用すると、変数または式が特定のデータ型のメンバーであるかどうかをテストできます。以前のバージョンの ActionScript では、instanceof 演算子がこの機能を提供していましたが、ActionScript 3.0 では、instanceof 演算子を使用してデータ型のメンバーシップをテストしないでください。手動の型チェックには、instanceof 演算子の代わりに is 演算子を使用する必要があります。これは、式 x instanceof y は、x のプロトタイプ チェーンで y が存在するかどうかをチェックするだけだからです (ActionScript 3.0 では、プロトタイプ チェーンは継承階層の完全な図を提供しません)。

TypeScript にinstanceofも同じ問題があります。まだ開発中の言語なので、そのような機能の提案をすることをお勧めします。

参照:

  • 出典:インスタンス
  • TypeScript のドキュメント:instanceof狭める、これはinstanceof物事を絞り込むためにどのように使用できるかを示しています

おすすめ記事