Aula 09 – Módulos e Organização Profissional 📁
Objetivo
Nesta aula, aprenderemos a organizar código TypeScript de forma modular e escalável. Veremos como usar ES Modules, criar "Barrel Files" e configurar apelidos para caminhos, facilitando a manutenção de projetos grandes.
1. ES Modules (import/export) 📦
O TypeScript segue o padrão oficial do JavaScript para módulos (ESM). Isso permite que dividamos o código em vários arquivos e importemos apenas o que for necessário.
Exportando
Importando
2. Barrel Files (O arquivo index.ts) 🛢️
Um Barrel File é uma forma de consolidar múltiplos módulos em um único arquivo de saída, simplificando os imports no restante da aplicação.
Estrutura
Exemplo no index.ts
Agora você pode importar tudo de /models em vez de cada arquivo individualmente.
3. Namespaces (Legado vs Moderno) 🏛️
Antigamente, usava-se muito o namespace para organizar o código. Hoje, com o ES Modules, eles são menos comuns, mas ainda aparecem em bibliotecas legadas ou definições de tipos.
4. Path Aliases (Apelidos de Caminho) 🗺️
Em projetos grandes, os imports podem ficar confusos: ../../../../services/api. Podemos configurar o tsconfig.json para criar apelidos.
Configuração no tsconfig.json
{
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"@services/*": ["services/*"],
"@models/*": ["models/*"]
}
}
}
5. Estruturação de Projeto Profissional 🏗️
Visualizando a Estrutura (Mermaid)
graph TD;
Root[Raiz do Projeto] --> Src[src];
Src --> Models[models - Interfaces e Types];
Src --> Services[services - Lógica e APIs];
Src --> Utils[utils - Funções utilitárias];
Src --> App[index.ts - Ponto de Entrada];
Root --> Dist[dist - Código JS Compilado];
Root --> Config[tsconfig.json];
6. Exercícios Práticos 📝
- Básico: Crie dois arquivos: um que exporte uma classe e outro que a importe e instancie.
- Básico: Use o
export defaultpara exportar uma função e importe-a com um nome diferente. - Intermediário: Crie uma pasta
utils, adicione três funções em arquivos separados e crie um "Barrel File" (index.ts) para exportá-las. - Intermediário: Tente configurar um
path aliasno seutsconfig.jsone use-o em um import. - Desafio: Refatore um projeto pequeno que use apenas um arquivo para a estrutura profissional sugerida no diagrama acima.
🚀 Mini-Projeto da Aula
Organize um Sistema de Cadastro de Clientes.
- Crie uma pasta domain para as interfaces.
- Crie uma pasta data para o repositório.
- Crie uma pasta shared para funções utilitárias (ex: formatadores de CPF).
- Use Barrel Files em cada pasta para exportar as funcionalidades de forma limpa.
Próxima Aula: Vamos colocar o TypeScript para rodar no lado do servidor com TypeScript com Node.js (Backend)!