Identificando os tipos de dados com `typeof()` no JavaScript

Introdução ao JavaScript / Tutorial JavaScript

A função typeof() no JavaScript é usado para identificar o tipo de um valor ou variável. Ele retorna uma string indicando o tipo do operando.

Sintaxe

typeof(operando)

O operando pode ser qualquer expressão, variável ou valor literal.

Tipos primitivos

O typeof pode ser usado para identificar os tipos primitivos no JavaScript:

console.log( typeof(true) )  // Imprime: 'boolean'
console.log( typeof(100) )   // Imprime: 'number'
console.log( typeof('Olá') ) // Imprime: 'string'
console.log( typeof(nada) )  // Imprime: 'undefined'
console.log( typeof({}) )    // Imprime: 'object'
console.log( typeof(BigInt(1000) ) // Imprime: 'bigint'
console.log( typeof(setTimeout) )  // Imprime: 'function'

A função typeof() apresenta limitações em alguns casos, como com array, null e Date. Nesses casos, ele retorna apenas a descrição genérica 'object', o que pode ser impreciso.

Objetos e funções

Para objetos, arrays e funções, o typeof retorna valores específicos:

console.log( typeof({ nome: 'Arthur' }) ) // Imprime: 'object'
console.log( typeof([1, 2, 3]) )     // Imprime: 'object'
console.log( typeof(function() {}) ) // Imprime: 'function'

Casos especiais

Indentificando o tipo de null

Apesar de ser um valor primitivo, o typeof(null) retorna 'object'. Esse comportamento é um bug histórico no JavaScript, que não foi corrigido para manter a compatibilidade retroativa. O null foi originalmente projetado como uma referência nula para um objeto inexistente, mas hoje é tratado como um tipo primitivo que representa a ausência intencional de valor.

console.log( typeof(null) ) // Imprime: 'object'

Para identificar se uma variável é null, você pode usar uma comparação direta com o valor null:

let vazio = null
console.log(vazio === null) // Imprime: true

Essa abordagem é confiável e evita as limitações do operador typeof ao lidar com valores null.

Identificando o tipo de Arrays

O typeof() de um array retorna 'object', pois arrays são tecnicamente objetos no JavaScript. No entanto, para verificar especificamente se algo é um array, é recomendado o uso de Array.isArray().

console.log( typeof [1, 2, 3] ) // Imprime: 'object'
console.log( Array.isArray([1, 2, 3]) ) // Imprime: true

Conclusão

A função typeof() é uma ferramenta útil para identificar tipos de dados no JavaScript, mas é importante estar ciente de suas limitações, como o caso de null e arrays. Use-o em conjunto com outras verificações para obter resultados mais precisos.