Mini-Projeto: Aula 07 – Formulário de Perfil (Utility Types) ⚙️
Objetivo
Utilizar utilitários como Partial, Readonly, Pick e Omit para gerenciar diferentes estados de um perfil de usuário em uma aplicação.
🏗️ Requisitos do Projeto
- Interface completa de
UserProfile. - Criar um tipo para "Visualização Pública" (omitindo dados sensíveis).
- Criar um tipo para "Atualização de Perfil" (permitindo campos parciais).
- Garantir que o ID do usuário seja imutável.
🛠️ Passo a Passo
1. Modelo Base
interface UserProfile {
id: number;
nome: string;
email: string;
telefone?: string;
senhaHash: string;
dataCriacao: Date;
}
2. Uso de Utility Types
// Apenas o que o usuário pode ver de outros
type PublicProfile = Omit<UserProfile, "senhaHash" | "email">;
// O que enviamos para o banco ao atualizar (ID obrigatório, resto parcial)
type UpdatePayload = Partial<Omit<UserProfile, "id" | "dataCriacao">> & { id: number };
// Usuário imutável após carregado
type SecureUser = Readonly<UserProfile>;
✅ Desafio Extra
- Use
Pickpara criar um tipoUserContactque contenha apenasnomeeemail. - Use
Recordpara criar um objeto que mapeieiddo usuário para seuPublicProfile.