Padrões reutilizáveis para modelos de dados
Aplique padrões genéricos a modelos reais: Paginated , Result , DTOs com Pick/Omit/Partial e mapas indexados por id.
Padrões reutilizáveis para modelos de dados é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 3 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de TypeScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de TypeScript Academy inclui 3 aulas no total.
Introdução
Objetivo: empacotar estruturas de dados comuns como tipos genéricos para reutilizar a estrutura sem perder a segurança de tipos.
- Paginated<T>
- Result<T,E>
- DTOs com Pick/Omit/Partial
- Mapas indexados por id
Paginated<T>
Paginated<T> centraliza os metadados e mantém preciso o tipo de item T para listas.
type Paginated<T> = {
items: T[];
total: number;
page: number;
pageSize: number;
};
type User = { id: number; name: string };
const page1: Paginated<User> = {
items: [{ id: 1, name: "Ada" }],
total: 10,
page: 1,
pageSize: 5,
};
console.log(page1.items[0].name);Result<T,E>
Result<T,E> modela explicitamente sucesso e falha com um discriminador (ok) para ramificações seguras.
type Ok<T> = { ok: true; data: T };
type Err<E = string> = { ok: false; error: E };
type Result<T, E = string> = Ok<T> | Err<E>;
function readUser(id: number): Result<{ id: number; name: string }> {
return id > 0 ? { ok: true, data: { id, name: "Ada" } } : { ok: false, error: "not found" };
}
const r = readUser(1);
if (r.ok) {
console.log(r.data.name);
} else {
console.error(r.error);
}Padrões de DTO
Com Pick/Omit/Partial, você deriva tipos de DTO concisos do seu modelo principal, sem duplicação.
type User = { id: number; name: string; email?: string; role: "user" | "admin" };
type UserCreateDto = Pick<User, "name" | "email">; // fields required to create
// Update = partial editable fields
type UserUpdateDto = Partial<Pick<User, "name" | "email">>;
const createBody: UserCreateDto = { name: "Ada", email: "a@x.io" };
const updateBody: UserUpdateDto = { name: "Ada L." };MapById<T>
MapById<T> indexa entidades por id para buscas rápidas. Restrinja T para garantir que exista um id.
type Key = string | number;
type MapById<T extends { id: Key }> = Record<Key, T>;
const byId: MapById<{ id: number; name: string }> = {
1: { id: 1, name: "Ada" },
2: { id: 2, name: "Lin" },
};
console.log(byId[1].name);Dicas
Dicas:
- Mantenha os padrões pequenos e combináveis.
- Prefira uniões discriminadas para máquinas de estado.
- Derive DTOs dos modelos — evite cópias manuais.
Verificação de Paginated<T>
Verificação rápida: por que definir um Paginated<T> genérico?
Recapitulação
Recapitulação: generalize estruturas recorrentes: Paginated<T>, Result<T,E>, DTOs com Pick/Omit/Partial e mapas indexados por id. Funções auxiliares pequenas podem ser usadas em vários recursos.
Perguntas Frequentes
A aula “Padrões reutilizáveis para modelos de dados” é grátis?
Sim — o texto completo de “Padrões reutilizáveis para modelos de dados” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de TypeScript Academy, atualize para CoddyKit PRO. O curso de TypeScript Academy inclui 3 aulas no total.
O que vou aprender em “Padrões reutilizáveis para modelos de dados”?
Aplique padrões genéricos a modelos reais: Paginated , Result , DTOs com Pick/Omit/Partial e mapas indexados por id. Você pratica TypeScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar TypeScript Academy?
Nenhuma experiência prévia é necessária. TypeScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 3.
Quanto tempo leva a aula “Padrões reutilizáveis para modelos de dados”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de TypeScript Academy?
Sim. Cada aula de TypeScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Interfaces genéricas e aliases de tipos
- Tipos condicionais (introdução) e distribuição sobre uniões
- Padrões reutilizáveis para modelos de dados