Assunto: Desevolvimento, JavaScript Date Created: August 14, 2022 6:58 AM Status: Revisão
Neste post falaremos um pouco sobre o uso de typeof
e como isso pode trazer bugs inesperados e irritantes a sua aplicação.
Acredito que em algum momento da sua vida você precisou uma verificação muito similar a esta:
if (typeof myVar === 'object') {
console.log(myVar.foo);
}
E talvez tenha visto um erro do tipo:
Cannot read properties of null (reading 'foo')
Mas por que isso aconteceu? null
não é um objeto, como o JavaScript aceitou essa condição como verdadeira?
Por mais curioso que seja, isso é um bug no código-fonte do JavaScript! null
realmente não deveria ser considerado como um tipo de object
, afinal null
é um tipo primitivo em JavaScript. Porém nas primeiras versões de seu código fonte, esse problema passou desapercebido pelos criadores, e já era muito tarde quando foi notado, sua correção poderia causar muitos problemas nos códigos escritos em JS que estavam em produção.
Para mais detalhes sobre o código causa isso no motor do JavaScript, visite as referências deste post 👇🏾.
Mas como utilizar typeof myVar === 'object'
de maneira que isso não cause problemas em sua aplicação? Isso é bem simples na verdade, basta adicionar mais uma condição:
if (typeof myVar === 'object' && myVar !== null) {
console.log(myVar.foo);
}
E para deixar o seu código mais limpo e evitar duplicidade, você pode extraí-lo para uma função:
const isObject = (obj) => typeof obj === 'object' && obj !== null;
//...
if (isObject(myVar)) {
console.log(myVar.foo);
}
Se este post de ajudou de alguma forma não deixe de dar sua palma (lembrando que você pode dar até 50 palmas se tiver gostado muito do conteúdo 😉). Comentários, dúvidas, críticas e sugestões são sempre bem vindos, e não deixei de entrar em contato pelas redes sociais:
- LinkedIn: https://linkedin.com/in/charles-willian ****
- Twitter: https://twitter.com/charles_wvs
- GitHub: https://github.com/charles00willian