Mini-Projeto: Aula 04 – Sistema de Gerenciamento de Tarefas (Interfaces) ✅
Objetivo
Modelar um sistema de tarefas (To-Do) corporativo usando interfaces, propriedades opcionais e herança de interfaces.
🏗️ Requisitos do Projeto
- Interface para
Usuario. - Interface para
Tarefacom campos opcionais. - Interface para
Projetoque agrupa várias tarefas. - Garantir imutabilidade em campos críticos com
readonly.
🛠️ Passo a Passo
1. Definição das Interfaces
interface IUser {
readonly id: number;
nome: string;
email: string;
}
interface ITask {
titulo: string;
descricao?: string;
concluida: boolean;
responsavel: IUser;
}
interface IProject {
nome: string;
tarefas: ITask[];
}
2. Implementação
Crie uma função que receba um IProject e retorne apenas as tarefas concluídas.
const meuProjeto: IProject = {
nome: "Refatoração TS",
tarefas: [
{ titulo: "Setup", concluida: true, responsavel: { id: 1, nome: "R", email: "r@b.com" } },
{ titulo: "Build", concluida: false, responsavel: { id: 1, nome: "R", email: "r@b.com" } }
]
};
function listarConcluidas(projeto: IProject): ITask[] {
return projeto.tarefas.filter(t => t.concluida);
}
✅ Desafio Extra
- Crie uma interface
ITaskUrgenteque estendeITaske adiciona um campoprazo: Date. - Use
Declaration Mergingpara adicionar uma propriedadeavatarna interfaceIUser.