unknown Tipo unknown
Última atualização: 2026-10-22
unknown Tipo unknown
unknown é o any seguro: qualquer valor pode ser atribuído a ele, mas deve ser estreitado ou assertado antes do uso. O tipo preferido para entrada externa (respostas de API, resultados de JSON.parse).
| Grupo | Tipos Básicos |
|---|---|
| Tipo | Tipo |
| Modo strict | Não necessário |
ℹ️ Info O editor transpila TypeScript para JavaScript e o executa (sem verificação de tipos); veja a Saída de cada exemplo para o resultado da verificação.
📝 Sintaxe
let value: unknown = JSON.parse(text);
if (typeof value === "string") {
value.trim(); // só é possível chamar métodos após estreitar
}
⚙️ Parâmetros
| typeof x === "string" | Verificações como typeof x === "string" estreitam unknown para um tipo concreto |
|---|
Retorno:Nenhum valor de retorno — unknown é uma anotação de tipo e não produz código em tempo de execução.
▶ Exemplo
Edite o código abaixo e clique em Testar para ver o resultado transpilado:
Saída:
hi
2.5
unsupported
(Saída de execução após a transpilação; chamar value.trim() sem estreitamento é um erro de compilação — essa é justamente a proteção do unknown)
💡 Observações
ℹ️ Info A atribuibilidade é a diferença-chave: unknown flui apenas para unknown/any, enquanto any flui para todo lugar — assim unknown não propaga insegurança.
💡 Dica Ferramentas comuns de estreitamento: typeof (primitivos), instanceof (instâncias de classes), in (presença de propriedade), Array.isArray.
⚠️ Atenção O estreitamento prova a suposição de tipo, não a forma dos dados; valide JSON externo com uma biblioteca de schema como zod.
🏷️ Tipos Básicos Relacionados
💡 Casos relacionados
Mais casos em breve.
📚 Tutoriais relacionados
❓ Perguntas frequentes
P Devo escolher unknown ou any?
R Prefira unknown por padrão: ele força você a confirmar o tipo antes do uso, expondo erros em tempo de compilação. any é uma ferramenta temporária para protótipos ou migração de código legado.
P Como transformar unknown em um tipo concreto?
R Duas formas: estreitamento (typeof/instanceof/in, rastreado automaticamente) ou uma asserção value as T (você dá garantia). Prefira estreitamento; asseste com parcimônia.
P Qual é o tipo de retorno de JSON.parse?
R A assinatura da lib diz any. O mais seguro é envolver: function safeParse(text: string): unknown { return JSON.parse(text); } e validar com um schema.