ANÚNCIO

~/questoes/programacao

Qual é a diferença entre o tipo 'any' e o tipo 'unknown' em TypeScript?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência TypeScript: tutorial para completos iniciantes
Para fixar

Any vs Unknown em TypeScript: Segurança de Tipos

Conceito central

Em TypeScript, both any e unknown aceitam qualquer tipo de valor, mas unknown é mais seguro porque força você a verificar o tipo antes de usar a variável, enquanto any desativa completamente a verificação de tipos.

Por que essa resposta faz sentido

Unknown oferece segurança adicional porque exige que você faça uma verificação de tipo (type guard) antes de usar a variável, evitando erros em tempo de execução. Any, por outro lado, permite qualquer operação sem verificação, o que pode levar a bugs difíceis de encontrar.

Armadilhas comuns

  • Pensar que unknown e any são a mesma coisa só porque ambos aceitam qualquer tipo de valor
  • Usar any em situações onde unknown seria mais seguro, deixando brechas para bugs
  • Esquecer que unknown exige type guards (verificações como typeof ou instanceof) antes de usar a variável

Entenda as alternativas

A

Correta. Unknown é uma alternativa segura ao any porque força verificações de tipo. Se você tenta usar uma variável unknown sem verificar seu tipo, o TypeScript emite um erro de compilação. Isso protege você contra operações perigosas.

B

Incorreta. Unknown funciona com todos os tipos, não apenas objetos. O any também funciona com primitivos e objetos. A diferença real está na segurança, não na compatibilidade com tipos específicos.

C

Incorreta. A velocidade de compilação não diferencia any e unknown. Ambos são processados no mesmo tempo pelo compilador TypeScript. A principal diferença está em como enfrentam a segurança de tipos.

D

Incorreta. Any e unknown não são iguais. Any desativa completamente a verificação de tipos, permitindo qualquer operação. Unknown mantém a segurança de tipos e força verificações antes do uso.

Dica prática: Quando você não sabe qual tipo uma variável terá, use unknown em vez de any. Depois, use type guards como typeof variavel === 'string' para verificar o tipo antes de operar. Isso torna seu código mais seguro e autodocumentado.

Revise pensando: Se você receber uma variável de tipo unknown, o que você precisa fazer antes de usá-la?