devterview_$ iniciar simulação

`any` x `unknown` x `never`

MédioPlenoSistema de tipos

Pergunta

Qual a diferença entre `any`, `unknown` e `never` em TypeScript, e por que `unknown` costuma ser a escolha certa onde as pessoas usam `any`?

Resposta esperada

`any` desliga o checador pra aquele valor: você pode acessar qualquer propriedade e atribuí-lo a qualquer coisa — é um buraco na tipagem que se propaga. `unknown` é o topo 'seguro': qualquer valor cabe nele, mas você não pode fazer NADA com um `unknown` sem antes estreitar o tipo (checar `typeof`, `in`, um type guard). É o tipo certo pra entrada não confiável (resposta de API, `JSON.parse`, `catch`): força você a validar antes de usar. `never` é o tipo vazio — nenhum valor é `never`; aparece como retorno de função que sempre lança ou faz loop infinito, e em ramos impossíveis de um `switch` exaustivo (útil pra o compilador reclamar se você adiciona um caso e esquece de tratar).

Por que perguntam isso

Pergunta pleno de TS. Sinal de domínio: 'unknown força validar' pra entrada externa e o uso de `never` pra exaustividade de switch.

#any#unknown#never#type-safety
publicidade

Perguntas de acompanhamento

Relacionadas