Pergunta de entrevista para Desenvolvedor Full Stack

Qual é a diferença entre any e unknown no TypeScript, e quando você recorre a cada um?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

O any desliga a checagem de tipos para aquele valor, então todo acesso a propriedade e toda chamada compila mesmo quando estão errados. O unknown aceita qualquer valor na entrada mas obriga você a estreitá-lo com uma checagem de typeof, um type guard ou um parse de schema antes de poder usar. Recorra a unknown nas fronteiras de confiança como respostas de fetch e JSON.parse. Recorra a any quase nunca.

Por que os entrevistadores perguntam isso

Isso separa quem usa o sistema de tipos de quem briga com ele. O entrevistador está checando se você pensa em fronteiras de confiança, se você sabe que os tipos do TypeScript evaporam em tempo de execução, e se você valida dados que chegam de uma rede ou de um banco em vez de afirmar um formato e torcer. Isso também revela como você lida com código legado, porque a resposta honesta normalmente envolve uma história de migração e não pureza.

Como estruturar sua resposta

  • Defina os dois em uma frase cada.
  • Diga que os tipos são apagados em tempo de execução, então validação é outra coisa.
  • Cite as fronteiras onde o unknown pertence.
  • Dê o caso restrito em que o any ainda é aceitável.

Exemplo de resposta

Exemplo falado, em primeira pessoa

A minha regra é que any é um bug que eu ainda não encontrei. Se eu escrevo any, eu falei para o compilador parar de ajudar e a falha aparece em tempo de execução no navegador de um usuário. O unknown é a versão honesta: ele diz eu não sei o que é isto, e o compilador me obriga a provar o formato antes de eu encostar. Na prática isso significa que qualquer coisa que atravessa uma fronteira de confiança começa como unknown. Uma resposta de fetch, o corpo de um webhook, o que quer que saia do JSON.parse ou do localStorage. Em uma fintech em que eu trabalhei a gente escrevia à mão os tipos de resposta da API e eles divergiram do backend em uns dois meses, então um campo que virou anulável começou a quebrar a renderização de uma tabela em produção. A gente passou a fazer parse com zod na fronteira e a inferir os tipos do TypeScript a partir do schema, e toda essa classe de bug desapareceu. O único lugar em que eu ainda permito any é dentro de um helper genérico bem restrito, e mesmo lá unknown mais um guard normalmente resolve.

Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.

Veja como funciona

Perguntas de acompanhamento que você pode esperar

  • Como você mantém esses schemas em sincronia com o backend?
  • Qual é a diferença entre uma asserção de tipo e um type guard aqui?
  • Como você introduziria isso em uma base de código já cheia de any?

Mais perguntas para Desenvolvedor Full Stack

Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.

Prever minhas perguntas

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot