# Módulo 3 - TypeScript, Git e qualidade

## Identificação

- **Status:** concluído
- **Nível:** fundamentos de engenharia
- **Carga horária:** 12 horas
- **Formato sugerido:** 6 aulas de 2 horas
- **Projeto:** painel TypeScript versionado, testado e documentado

## Propósito

Este módulo transforma o projeto JavaScript em uma base TypeScript com contratos
estáticos, configuração reproduzível, qualidade automatizada e fluxo Git
profissional.

## Competências

Ao final do módulo, o aluno será capaz de:

- explicar o papel do TypeScript;
- configurar compilação estrita;
- modelar dados com interfaces e aliases;
- utilizar unions, narrowing e generics;
- evitar `any` desnecessário;
- aplicar lint e formatação;
- trabalhar com branches e pull requests;
- escrever testes unitários;
- documentar decisões e comandos do projeto.

## Sequência de aulas

| Aula | Tema | Produto da aula |
|---|---|---|
| [3.1](renderizadas/aula-01.html) | Introdução ao TypeScript | Primeiro projeto tipado |
| [3.2](renderizadas/aula-02.html) | Interfaces, aliases e contratos | Modelo tipado de tarefas |
| [3.3](renderizadas/aula-03.html) | Unions, narrowing e generics | Biblioteca genérica de resultados |
| [3.4](renderizadas/aula-04.html) | Configuração, lint e formatação | Fluxo local de qualidade |
| [3.5](renderizadas/aula-05.html) | Git, branches e pull requests | Fluxo de colaboração |
| [3.6](renderizadas/aula-06.html) | Testes, documentação e projeto | Projeto TypeScript final |

## Projeto do módulo

O aluno migrará o painel de tarefas para TypeScript e entregará:

- tipos para entidades e estados;
- compilação estrita;
- módulos com contratos explícitos;
- regras testadas;
- lint e formatação;
- histórico Git organizado;
- branch de funcionalidade;
- revisão simulada por pull request;
- README com instalação, execução, testes e decisões.

## Avaliação

| Critério | Pontos |
|---|---:|
| Modelagem TypeScript | 25 |
| Configuração estrita | 15 |
| Organização e qualidade | 15 |
| Testes | 20 |
| Fluxo Git | 15 |
| Documentação | 10 |
| **Total** | **100** |

## Critérios de conclusão

- obter pelo menos 70 pontos;
- não depender de `any` para evitar erros;
- manter compilação e testes aprovados;
- demonstrar uma branch de funcionalidade;
- explicar que TypeScript não valida automaticamente dados externos;
- documentar os comandos utilizados.
