DEV Community

Cover image for TypeScript: Any vs Unknown
Luís Von Muller
Luís Von Muller

Posted on

TypeScript: Any vs Unknown

Se você acabou de chegar no mundão do TypeScript, aqui está um conteúdo essencial, onde diferencia a ideia de 2 tipos primitivos. E também o porquê de que se você sair usando arbitrariamente any você não está realmente usando o TypeScript e deveria fazer apenas fazer em JavaScript...

Vamos pegar um exemplo bem simples e a partir dele debater a ideia.

let fulano: any = "João";
let ciclado: unknown = "Augusto"
Enter fullscreen mode Exit fullscreen mode

Ao tipar a variável "Fulano" com any, nós literalmentes dizemos para o Transpilador/Compilador do Typescript que ela é literalmente: Qualquer coisa.

Por exemplo, para ele, o seguinte código seria totalmente válido.

fulano.funcao(); 
Enter fullscreen mode Exit fullscreen mode

Todavia, não existe essa função em fulano. Logo, em tempo de execução, isto é: em runtime, nos retornaria um erro (ou seja, ia dar merda).
(ノಠ益ಠ)ノ彡┻━┻

Já com o "Unknown" o negócio é diferente, a gente usa o propósito mor do TypeScript: Type Safety (Segurança de Tipos ante execução).

ciclado.funcao();
Enter fullscreen mode Exit fullscreen mode

Typescript error because of a calling on a unkown

Ou seja, o Transpilador/Compilador do Typescript não vai deixar esse código realmente deixar ser executado, porque, o sistemas de tipo não é capaz de garantir que realmente haja essa função dentro de ciclano.

Simples né? ¯_(ツ)_/¯

Vem pro meu twitter & muito mais: https://allmylinks.com/luisvonmuller

Aqui tem mais conteúdo sobre TypeScript em PT-BR: https://luisvonmuller.gitbook.io/typescript-para-brasileiros/

Beijão (っ˘з(˘⌣˘ )

Top comments (6)

Collapse
 
abhj profile image
Abhijay Mitra •

Dev can't support translation? You can always translate pages in chrome by right clicking on the screen.

Collapse
 
hgoulart profile image
Hingo Rocha •

Legal.

Collapse
 
pekosong profile image
Peko •

nice

Some comments may only be visible to logged-in visitors. Sign in to view all comments.