0Pricing
TypeScript Academy · Aula

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

  1. Interfaces genéricas e aliases de tipos
  2. Tipos condicionais (introdução) e distribuição sobre uniões
  3. Padrões reutilizáveis para modelos de dados
← Voltar para TypeScript Academy