Fácil TypeScript
Anotando e inferindo tipos básicos
Enunciado
Crie variáveis para representar um produto: nome (string), preço (number) e disponível (boolean). Use inferência para nome e preco, e anotação explícita para disponivel. Depois imprima os três valores.
Requisitos
nomeeprecodevem ser declarados comconste sem anotação.disponiveldeve ser declarado comlete anotação: boolean.- Imprimir os três valores com
console.log.
Código inicial
// Declare as variáveis aqui
// Imprima os valores
Saída esperada
Notebook 3500 true
Ver dica
Lembre-se: const infere o tipo literal, let com anotação garante o tipo declarado.
Mostrar solução
// Inferência: o tipo é descoberto pelo valor
const nome = 'Notebook'; // tipo: 'Notebook' (literal)
const preco = 3500; // tipo: 3500 (literal)
// Anotação explícita: deixamos claro que é boolean
let disponivel: boolean = true;
// Impressão dos valores
console.log(nome, preco, disponivel);
Passo a passo
const nome = 'Notebook'— o compilador infere o tipo literal'Notebook', poisconstnão permite reatribuição.const preco = 3500— mesma ideia: o tipo inferido é o literal3500.let disponivel: boolean = true— usamosletporque o valor pode mudar, e anotamosbooleanpara deixar a intenção explícita.console.log(nome, preco, disponivel)— imprime os três valores separados por espaço.
Por que funciona
A inferência de const preserva o literal, o que é útil para uniões de tipos. Já a anotação em let impede que o compilador faça widening para um tipo mais genérico sem controle. Essa mistura é idiomática: inferir quando o valor já diz tudo e anotar quando queremos garantir um contrato.
Erros comuns
const disponivel: boolean = 'sim'→ erro de compilação:'sim'não é atribuível aboolean.let disponivel = true; disponivel = 'não';→ erro: após widening,disponivelébooleane não aceita string.const preco = 3500; preco = 4000;→ erro:constnão pode ser reatribuído.
Outra forma de resolver
Se quiséssemos que nome e preco aceitassem outros valores depois, usaríamos let com anotação:
let nome: string = 'Notebook';
let preco: number = 3500;
Isso é preferível quando os valores mudam ao longo do tempo.
Saída esperada
Notebook 3500 true