Planejamento do Projeto: Rastreador de Gastos
Vamos planejar um rastreador de gastos pessoais em TypeScript — um projeto real para o seu portfólio.
Com os fundamentos do curso em mãos, é hora de construir algo que vai além de um exercício: um projeto que você pode apresentar como parte do seu portfólio.
O projeto
Rastreador de Gastos Pessoais — uma aplicação de linha de comando (CLI) em TypeScript para registrar e analisar gastos do dia a dia.
Por que esse projeto é bom para um portfólio?
- Resolve um problema real que qualquer pessoa entende
- Demonstra domínio de TypeScript, OOP, arrays e módulos
- Gera saída visual e organizada no terminal com
console.table - Pode ser descrito em uma linha: "CLI em TypeScript para rastreamento de gastos pessoais"
- É extensível: persistência em arquivo, gráficos, orçamento mensal — campo aberto para evoluir
Funcionalidades
- Adicionar gasto — com descrição, valor e categoria
- Listar gastos — em formato de tabela organizada
- Resumo por categoria — quanto foi gasto em cada área
- Total gasto — soma de todos os registros
- Filtrar por categoria — ver apenas gastos de uma área específica
Modelando os dados
O primeiro passo é definir os tipos que nosso programa vai manipular.
O type Categoria
Um union type garante que apenas categorias válidas sejam usadas — o TypeScript vai acusar erro se você tentar usar uma categoria inexistente:
type Categoria =
| "alimentação"
| "transporte"
| "moradia"
| "lazer"
| "saúde"
| "outros";A interface Gasto
Cada gasto terá:
id— identificador único gerado automaticamentedescricao— o que foi gastovalor— quanto custou, em reaiscategoria— em qual área se encaixadata— quando foi registrado
interface Gasto {
id: number;
descricao: string;
valor: number;
categoria: Categoria;
data: string;
}Arquitetura: separando responsabilidades
Vamos dividir o código em três arquivos, cada um com uma responsabilidade clara:
gastos-cli/
src/
tipos.ts ← interface Gasto e type Categoria
rastreador.ts ← classe RastreadorDeGastos com toda a lógica
index.ts ← ponto de entrada: cria o rastreador e usa seus métodos
package.json
tsconfig.jsonEssa separação é o padrão profissional. Você vai entender por que ela importa quando o projeto crescer.
A classe RastreadorDeGastos
A classe central do projeto terá estes métodos:
| Método | O que faz |
|---|---|
adicionarGasto(...) | Valida e adiciona um gasto ao array |
listarGastos() | Exibe todos em formato de tabela |
resumoPorCategoria() | Mostra total gasto por categoria |
totalGasto() | Retorna a soma de todos os valores |
filtrarPorCategoria(cat) | Retorna os gastos de uma categoria |
Estrutura inicial da classe
class RastreadorDeGastos {
private gastos: Gasto[] = [];
private proximoId: number = 1;
adicionarGasto(descricao: string, valor: number, categoria: Categoria): void {
// a implementar
}
listarGastos(): void {
// a implementar
}
resumoPorCategoria(): void {
// a implementar
}
totalGasto(): number {
// a implementar
}
filtrarPorCategoria(categoria: Categoria): Gasto[] {
// a implementar
}
}O que você vai praticar
Ao construir este projeto, você aplica e revisa:
- Union types e interfaces — modelar dados do mundo real com precisão
- Classes e encapsulamento — organizar lógica em uma estrutura coesa
- Módulos — separar responsabilidades com
import/export - Array methods —
push,filter,reduce,forEach,map - Tratamento de erros — validar entradas inválidas com
throw
Configurando o ambiente
- Crie uma pasta
gastos-clie entre nela - Inicie o projeto:
npm init -y - Instale as dependências:
npm install --save-dev typescript ts-node @types/node - Gere o
tsconfig.json:npx tsc --init - Crie a pasta
srccom os três arquivos:tipos.ts,rastreador.ts,index.ts - Adicione o script de execução ao
package.json:{ "scripts": { "start": "ts-node src/index.ts" } }
Com o planejamento e o ambiente prontos, vamos implementar a lógica na próxima página.