MB Academy

Executando e Evoluindo o Projeto

Execute o rastreador de gastos e descubra como evoluí-lo com novos desafios.

Com os três arquivos implementados, é hora de rodar o projeto e ver o resultado.

Executando

Na raiz do projeto, execute:

npm start

A saída no terminal será algo assim:

✓ "Almoço no restaurante" — R$ 45.50 adicionado.
✓ "Passagem de metrô" — R$ 4.40 adicionado.
✓ "Cinema com amigos" — R$ 32.00 adicionado.
✓ "Supermercado semanal" — R$ 187.30 adicionado.
✓ "Consulta médica" — R$ 250.00 adicionado.
✓ "Uber para o trabalho" — R$ 23.70 adicionado.

=== Todos os Gastos ===
┌─────────┬────┬────────────────────────┬────────────┬──────────────┬────────────┐
│ (index) │ ID │ Descrição              │ Valor (R$) │ Categoria    │ Data       │
├─────────┼────┼────────────────────────┼────────────┼──────────────┼────────────┤
│ 0       │ 1  │ 'Almoço no restaurante'│ '45.50'    │ 'alimentação'│ 15/06/2026 │
│ 1       │ 2  │ 'Passagem de metrô'    │ '4.40'     │ 'transporte' │ 15/06/2026 │
│ 2       │ 3  │ 'Cinema com amigos'    │ '32.00'    │ 'lazer'      │ 15/06/2026 │
│ 3       │ 4  │ 'Supermercado semanal' │ '187.30'   │ 'alimentação'│ 15/06/2026 │
│ 4       │ 5  │ 'Consulta médica'      │ '250.00'   │ 'saúde'      │ 15/06/2026 │
│ 5       │ 6  │ 'Uber para o trabalho' │ '23.70'    │ 'transporte' │ 15/06/2026 │
└─────────┴────┴────────────────────────┴────────────┴──────────────┴────────────┘

=== Resumo por Categoria ===
┌─────────┬──────────────┬────────────┐
│ (index) │ Categoria    │ Total (R$) │
├─────────┼──────────────┼────────────┤
│ 0       │ 'alimentação'│ '232.80'   │
│ 1       │ 'transporte' │ '28.10'    │
│ 2       │ 'lazer'      │ '32.00'    │
│ 3       │ 'saúde'      │ '250.00'   │
└─────────┴──────────────┴────────────┘

Total gasto: R$ 542.90

Gastos com alimentação: 2 registro(s)

Erro capturado: O valor do gasto deve ser maior que zero.

Parabéns — você construiu um projeto TypeScript completo, com módulos, classes, tipagem estrita e tratamento de erros.

Revisando o que você usou

Cada conceito do curso aparece neste projeto:

ConceitoOnde aparece
Interfaces e union typesGasto e Categoria em tipos.ts
Classes e encapsulamentoRastreadorDeGastos com propriedades private
Módulosimport/export entre os três arquivos
Array methodspush, filter, map, reduce, forEach
Tratamento de errosthrow em adicionarGasto, try/catch em index.ts
TypeScript strictnessO compilador impede categorias inválidas em tempo de compilação

Desafios para evoluir

Este projeto tem bastante espaço para crescer. Cada desafio abaixo é uma funcionalidade real que tornaria o projeto mais valioso no portfólio.

Desafio 1: Definir um orçamento mensal

Adicione um método definirOrcamento(valor: number): void e um método verificarOrcamento(): void que exibe quanto do orçamento já foi usado e quanto resta.

Desafio 2: Gasto mais caro por categoria

Crie um método gastoDominantePorCategoria(): void que, para cada categoria com gastos, exibe o item de maior valor. Use Math.max e filter.

Desafio 3: Persistência em arquivo

Atualmente os dados são perdidos quando o programa termina. Adicione:

  • salvarGastos(): converte o array para JSON e grava em gastos.json usando o módulo fs do Node.js
  • carregarGastos(): lê o arquivo na inicialização da classe e restaura os dados

Este é o desafio mais complexo, mas torna a aplicação genuinamente útil.

Desafio 4: Remover um gasto

Implemente removerGasto(id: number): void que encontra o gasto pelo ID e o remove do array. Use filter — o mesmo padrão que você viu no curso.

Desafio 5 (aberto): Torne-o seu

Adicione algo que faça sentido para você — metas por categoria, alertas de gastos excessivos, exportação para CSV, ou uma categoria personalizada. Esse tipo de personalização é o que faz um projeto de portfólio se destacar.

Colocando no portfólio

Para publicar este projeto no GitHub:

  1. Inicie o repositório Git dentro da pasta do projeto:
    git init
    git add .
    git commit -m "feat: rastreador de gastos pessoais em TypeScript"
  2. Crie um repositório no GitHub e faça o push
  3. Escreva um README.md descrevendo o que o projeto faz, como rodar e quais conceitos ele demonstra

Um projeto bem documentado conta mais do que dez projetos sem descrição.

Conclusão do projeto

Este rastreador de gastos demonstra — de forma concreta e verificável — que você sabe:

  • Modelar dados do mundo real com TypeScript
  • Organizar código em módulos com responsabilidades distintas
  • Manipular arrays com os métodos mais usados no dia a dia
  • Lidar com erros de forma controlada

De agora em diante, é só evoluir.