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
物事を絞り込むためにどのように使用できるかを示しています