cheque tipo Clase con mecanografiado

votos
107

Estoy muy entusiasmado con mecanografiado , así que empecé a jugar con él. Como desarrollador de ActionScript, se hace menos duro Javascript.

Sin embargo, en ActionScript es posible comprobar el tipo en tiempo de ejecución utilizando el operador es decir :

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 (o extiende) es una cierta clase o interfaz con el texto mecanografiado? No pude encontrar nada al respecto en las especificaciones del lenguaje, que debe estar allí cuando se trabaja con clases / interfaces.


Actualización: Algunos años más tarde. Se me cayó mecanografiado muy rápido y comenzar a usar Haxe que compila a JavaScript excelente y tiene verdadera verificación de tipos que trabaja en clases, las interfaces, etc. También tiene la eliminación de código muerto, mejores enumeraciones, tipos abstractos y compilar funciones de tiempo (macros), también compila a un archivo de modo que no se necesita sistema de haz de construcción compleja.

Publicado el 08/10/2012 a las 21:47
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
142

4.19.4 El operador instanceof

El instanceofoperador requiere el operando de la izquierda a ser de tipo Any, un tipo de objeto, o un tipo de parámetro de tipo, y el operando derecho a ser de tipo Cualquiera o un subtipo del tipo de interfaz 'Función'. El resultado es siempre del tipo primitivo de Boole.

Lo que podría utilizar

mySprite instanceof Sprite;

Tenga en cuenta que este operador también está en ActionScript pero no debe usarse más ahí:

El operador es decir, que es nuevo para ActionScript 3.0, permite comprobar si una variable o expresión es un miembro de un determinado tipo de datos. En las versiones anteriores de ActionScript, el operador instanceof proporciona esta funcionalidad, pero en ActionScript 3.0 el operador instanceof no debe ser utilizado para comprobar la pertenencia de tipo de datos. El operador is se debe utilizar en lugar del operador instanceof para la comprobación de tipo manual, porque la expresión instanceof X Y simplemente comprueba la cadena de prototipo de x para la existencia de y (y en ActionScript 3.0, la cadena de prototipo no proporciona una imagen completa de la jerarquía de herencia).

De mecanografiado instanceofcomparte los mismos problemas. Como se trata de una lengua que todavía está en su desarrollo recomiendo a usted establecer una propuesta de instalación de ese tipo.

Ver también:

Respondida el 08/10/2012 a las 21:54
fuente por usuario

votos
8

Mecanografiado tiene una manera de validar el tipo de una variable en tiempo de ejecución. Se puede añadir una función de validación que devuelve un predicado de tipo . Así que usted puede llamar a esta función dentro de una sentencia if, y estar seguro de que todo el código dentro de ese bloque es seguro de usar como el tipo que piensa que es.

Ejemplo de los docs mecanografiado:

function isFish(pet: Fish | Bird): pet is Fish {
   return (<Fish>pet).swim !== undefined;
}

// Both calls to 'swim' and 'fly' are now okay.
if (isFish(pet)) {
  pet.swim();
}
else {
  pet.fly();
}

Ver más en: https://www.typescriptlang.org/docs/handbook/advanced-types.html

Respondida el 21/11/2016 a las 07:42
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more