En ActionScript, es posible verificar el tipo en tiempo de ejecución utilizando el operador is :
var mySprite:Sprite = new Sprite();
trace(mySprite is Sprite); // true
trace(mySprite is DisplayObject);// true
trace(mySprite is IEventDispatcher); // true
¿Es posible detectar si una variable (se extiende o) es una determinada clase o interfaz con TypeScript?
No pude encontrar nada al respecto en las especificaciones del idioma. Debería estar allí cuando se trabaja con clases / interfaces.
fuente
Std.is(pet, Fish)
, que funciona en tipos, interfaces, etc.isFish
sí mismo es el predicado que se crea, y su cuerpo no tiene que ser un predicado de una sola línea. La ventaja de esto es que el compilador comprende en tiempo de compilación las funciones posibles apropiadas, pero su código internoisFish
se ejecuta en tiempo de ejecución. Incluso podría hacer que el protector contenga unainstanceof
declaración, por ejemploreturn pet instanceof Fish
(suponiendo que sea una clase y no una interfaz), pero esto sería innecesario ya que el compilador entiendeinstanceof
directamente.(pet as Fish)
ya que el tslinter se quejará(<Fish>pet)
. Ver tslint docPuede usar el
instanceof
operador para esto. De MDN:Si no sabe qué prototipos y cadenas de prototipos son, le recomiendo que lo busque. También aquí hay un ejemplo de JS (TS funciona de manera similar a este respecto) que podría aclarar el concepto:
La cadena prototipo en este ejemplo es:
animal> Animal.prototype> Object.prototype
fuente