Operador typeof
Clase 9 de 102 min de lectura
¿42 es un número o una cadena de texto? Viéndolo escrito está claro, pero cuando el valor está guardado en una variable ya no es tan evidente. El operador typeof te saca de dudas: le das un valor y te dice de qué tipo es.
La respuesta llega siempre en forma de cadena de texto. Aquí se lo preguntamos a una constante:
const MAGIC_NUMBER = 7typeof MAGIC_NUMBER // -> 'number'También puedes usarlo directamente con los valores que quieras comprobar. Pruébalo en la consola:
typeof undefined'undefined'typeof true'boolean'typeof 42'number'typeof 'Hola mundo''string'userName. Escribe el código necesario para ver su tipo.La excepción: null
Hasta aquí, todo en orden: cada tipo responde con su nombre. Pero hay un valor especial en JavaScript, null, con el que typeof contesta algo que no te esperas:
typeof null // -> 'object'Por eso, si quieres comprobar si una variable es null, no te fíes de typeof. Usa la comparación estricta ===:
const foo = nullfoo === null // -> true¿Y qué es ese object? Un tipo de dato que está en el centro de JavaScript y que veremos en detalle más adelante.
null, compáralo con la igualdad estricta: foo === null.Usando con operadores de comparación#
Saber el tipo de un valor está bien, pero typeof se vuelve útil de verdad junto a los operadores de comparación. Por ejemplo, para comprobar si una variable es del tipo que esperas:
const age = 42typeof age === 'number' // -> trueY como el resultado es un booleano, puedes encadenarlo con operadores lógicos para comprobar varias condiciones a la vez. Aquí, que age sea un número y que sea mayor que 18:
const age = 42typeof age === 'number' && age > 18 // -> truedogId pero no tengo claro si es una cadena de texto. Escribe el código necesario para asegurarte.En resumen
typeofdevuelve una cadena de texto con el tipo del valor:'number','string','boolean','undefined'…- Funciona tanto con variables como con valores escritos directamente.
typeof nulldevuelve'object'por un error histórico: para detectarnull, usa=== null.- Combinado con
===y&&sirve para comprobar que un valor es del tipo que esperas.