tRPC em TypeScript: Simplificando o Desenvolvimento de APIs

Construir uma API geralmente significa escolher entre REST ou GraphQL. Você gasta tempo configurando rotas, gerenciando esquemas e sincronizando tipos entre seu frontend e backend. Se você usa TypeScript em ambos os lados, esse processo parece pesado. Você acaba escrevendo os mesmos tipos duas vezes.

O tRPC muda esse fluxo de trabalho. Ele elimina a necessidade de um contrato de API separado. Em vez disso, utiliza o TypeScript para compartilhar tipos automaticamente entre seu servidor e cliente.

Por que usar tRPC?

  • Sem sincronização manual de tipos: Você escreve uma função no servidor e o cliente conhece os tipos de entrada e saída imediatamente.
  • Sem geração de código: Você não precisa executar ferramentas extras para criar tipos.
  • Sem desvio de esquema (schema drift): Como o cliente usa os tipos do servidor diretamente, seu frontend permanece sincronizado com seu backend.
  • Desenvolvimento mais rápido: Parece que você está chamando uma função em um arquivo local, em vez de fazer uma requisição de rede.

Métodos tradicionais possuem trade-offs. O REST exige chamadas de fetch manuais e tipos duplicados. O GraphQL fornece um esquema, mas adiciona complexidade com resolvers e codegen.

O tRPC trata seu backend como uma coleção de funções com segurança de tipos (type-safe). Você define procedimentos em roteadores (routers). O cliente importa o tipo do seu roteador e chama esses procedimentos diretamente.

Fluxo de exemplo:

  1. Defina um procedimento no servidor com validação (como o Zod).
  2. Exporte o tipo do roteador.
  3. Chame esse procedimento no cliente com preenchimento automático e segurança de tipos completos.

Quando usar tRPC:

  • Seu frontend e backend utilizam TypeScript.
  • Você controla ambos os lados da stack.
  • Você está construindo ferramentas internas, dashboards de administração ou aplicativos full-stack com Next.js.
  • Você trabalha em um monorepo.

Quando evitar o tRPC:

  • Você está construindo uma API pública para muitos usuários diferentes.
  • Seus clientes usam linguagens diferentes, como Python ou Go.
  • Você precisa de versionamento de API complexo.

O tRPC não é um substituto para REST ou GraphQL em todos os cenários. É uma ferramenta para velocidade e segurança quando sua stack é unificada. Ele remove a fricção das fronteiras de API e permite que você foque em escrever a lógica.

Fonte: https://dev.to/geekyants/trpc-in-typescript-simplify-api-development-without-boilerplate-3lm3