Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

O Tipo Compartilhado

O tipo Event que criamos no projeto web descreve a forma do JSON retornado pelo backend. O mobile consome a mesma API, então o tipo é idêntico. Crie src/types.ts:

Arquivo: mobile/src/types.ts
export interface Event {
  id: number;
  title: string;
  description: string;
  location: string;
  date: string;
  capacity: number;
  created_at: string;
  organizer_name: string;
}

Código 8-2: Mesmo tipo do projeto web — mesma API, mesma forma de dados.

O fato de estarmos duplicando esse arquivo é intencional. Poderíamos compartilhá-lo entre web/ e mobile/ usando npm workspaces ou um pacote local. Mas isso adiciona complexidade no build que não se justifica por um único arquivo. Quando a duplicação crescer — tipos de requisição, funções de formatação, validadores — aí sim faz sentido extrair um pacote compartilhado1.


  1. npm workspaces permitem que pacotes dentro de um monorepo se referenciem sem publicar no registry. A configuração envolve um package.json na raiz com "workspaces": ["backend", "web", "mobile", "shared"] e um pacote shared/ com seu próprio package.json. O custo é lidar com resolução de módulos entre pacotes, versões do TypeScript e configuração de build — justificável quando a duplicação cresce, excessivo para um arquivo. ↩