any: a armadilha da desistência
Existe um jeito de fazer o TypeScript parar de reclamar de uma vez: desligar a checagem. E é exatamente por isso que esse recurso deve ser evitado.
Estudar esta lição interativa →Você vai encontrar, cedo ou tarde, um tipo chamado any. Ele é tentador porque resolve qualquer diagnóstico incômodo na hora: basta anotar uma variável como any e o TypeScript para de checá-la por completo. Você pode atribuir qualquer valor a ela, chamar qualquer método nela, e nunca mais vai ver um diagnóstico vermelho relacionado a essa variável.
Isso parece uma solução, mas é o oposto: é desistir da proteção que você veio buscar neste curso. Rode o exemplo abaixo com atenção ao que acontece:
// any desliga a checagem de tipos para aquela variável. O código abaixo
// RODA sem nenhum diagnóstico de tipo... e quebra em tempo de execução.
let precoAny: any = "29.90"; // um valor que veio de um <input>, por exemplo
precoAny = precoAny.toFixed(2); // strings não têm toFixed: o any deixou passar
console.log(precoAny);Nenhum diagnóstico aparece aqui. Rode e veja o console.
Nenhum quadro de diagnóstico apareceu, e mesmo assim o código quebrou ao rodar, com um erro de toFixed is not a function. Isso é exatamente o problema: any devolveu o comportamento do JavaScript puro (nenhuma checagem, erro só na hora de rodar), só que escondido dentro de um código que parece TypeScript. Quem lê o código pode achar, por engano, que ali existe alguma garantia de tipo, quando na verdade não existe nenhuma.
Pense em any como um crachá de acesso total, sem nenhuma verificação na portaria. Ele até funciona, no sentido de que ninguém te barra na entrada. Mas o objetivo de ter uma portaria era justamente impedir quem não devia entrar, e um crachá desses simplesmente cancela essa função inteira.
Tem um agravante: se um valor any passa para dentro de outra função, outra variável, outro objeto, a falta de checagem se espalha junto com ele. Um único any mal colocado pode apagar a proteção de tipos de boa parte de um arquivo, silenciosamente. Por isso, a recomendação é tratar any como último recurso, e sempre que aparecer um no seu código (ou no de outra pessoa), vale perguntar: "dá para trocar por um tipo de verdade aqui?".
Na grande maioria dos casos, o antídoto para o any é só parar um segundo e perguntar "que tipo esse valor realmente tem?" e escrever esse tipo, em vez de fugir dele. Você vai treinar exatamente isso no exercício desta lição.
calcularJuros está com o parâmetro tipado como any, o que escondeu um bug: ela é chamada com um texto, mas faz uma conta de número. Troque any por number no parâmetro, corrija a chamada para passar um número de verdade, e deixe calcularJuros(200) devolver 210.function calcularJuros(valor: any) {
return valor * 1.05;
}
console.log(calcularJuros("200"));
🧩 Este é um exercício com correção automática — abra no app para completá-lo e verificar.