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

  • nome e preco devem ser declarados com const e sem anotação.
  • disponivel deve ser declarado com let e 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

  1. const nome = 'Notebook' — o compilador infere o tipo literal 'Notebook', pois const não permite reatribuição.
  2. const preco = 3500 — mesma ideia: o tipo inferido é o literal 3500.
  3. let disponivel: boolean = true — usamos let porque o valor pode mudar, e anotamos boolean para deixar a intenção explícita.
  4. 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 a boolean.
  • let disponivel = true; disponivel = 'não'; → erro: após widening, disponivel é boolean e não aceita string.
  • const preco = 3500; preco = 4000; → erro: const nã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