typeof , también conocido como typeOf y TypeOf , es un operador que se proporciona en varios lenguajes de programación para determinar el tipo de datos de una variable . Esto resulta útil cuando se construyen programas que deben aceptar varios tipos de datos sin especificar explícitamente el tipo.
En los lenguajes que admiten polimorfismo y conversión de tipos , el operador typeof puede tener uno de dos significados distintos cuando se aplica a un objeto . En algunos lenguajes, como Visual Basic , [1] el operador typeof devuelve el tipo dinámico del objeto. Es decir, devuelve el tipo original y verdadero del objeto, independientemente de cualquier conversión de tipos. En estos lenguajes, el operador typeof es el método para obtener información de tipo en tiempo de ejecución .
En otros lenguajes, como C# [2] o D [3] y, en cierta medida, en C (como parte de extensiones no estándar y revisiones estándar propuestas ), [4] [5] el operador typeof devuelve el tipo estático del operando. Es decir, evalúa el tipo declarado en ese instante en el programa, independientemente de su forma original. Estos lenguajes suelen tener otras construcciones para obtener información de tipo en tiempo de ejecución, como typeid .
En una extensión no estándar (GNU) del lenguaje de programación C , typeof se puede utilizar para definir una macro general para determinar el valor máximo de dos parámetros:
#define max(a,b) ({ tipo de (a) _a = (a); tipo de (b) _b = (b); _a > _b ? _a : _b; })
Cª # :
// Dado un objeto, devuelve si es un entero. // El operador "es" también se puede utilizar para determinar esto. public static bool IsInteger ( object o ) { return o . GetType () == typeof ( int ); }
A partir de C23, typeof es parte del estándar C. También se agregó el operador typeof_unqual, que es el mismo que typeof, excepto que elimina la calificación cvr y la calificación atómica. [6] [7] En VB.NET , la variante C# de "typeof" debe traducirse al método GetType de VB.NET. La palabra clave TypeOf en VB.NET se usa para comparar una variable de referencia de objeto con un tipo de datos.
El siguiente ejemplo utiliza expresiones TypeOf...Is para probar la compatibilidad de tipos de dos variables de referencia de objeto con varios tipos de datos.
Dim refInteger como objeto = 2 MsgBox ( "¿El tipo de objeto[Entero] es entero? " y el tipo de refInteger es entero ) MsgBox ( "¿El tipo de objeto[Entero] es doble? " y el tipo de refInteger es doble ) Dim refForm As Object = Nuevo Sistema . Windows . Formularios . Formulario MsgBox ( "¿El tipo de objeto [ Formulario ] es Formulario? " y el tipo de refForm es System.Windows.Forms.Form ) MsgBox ( "¿El tipo de objeto [ Formulario ] es Etiqueta? " y el tipo de refForm es System.Windows.Forms.Label ) MsgBox ( " ¿ El tipo de objeto [ Formulario] es Control? " y el tipo de refForm es System.Windows.Forms.Control ) MsgBox ( " ¿ El tipo de objeto [ Formulario] es IComponent ? " y el tipo de refForm es System.ComponentModel.IComponent )
En JavaScript :
función esNumero ( n ) { return ( typeof n === 'numero' ); }
En TypeScript : [8]
función ( parámetro : tipo de objeto existente ) { ... }
deje que newObject : tipo de existingObject ;