TypeScript ile Tip Güvenli API Geliştirme

Zod, tRPC ve Prisma üçlüsüyle end-to-end tip güvenliği sağlayan modern bir API mimarisi nasıl kurulur?

Tip Güvenliği Neden Önemli?

Runtime hataları pahalıdır. Compile-time’da yakalanan hatalar bedavadır.

Tech Stack

  • Zod: Runtime şema validasyonu
  • tRPC: End-to-end tipli API
  • Prisma: Tip-güvenli ORM

Zod ile Şema Tanımlama

import { z } from 'zod';

const UserSchema = z.object({
  id: z.string().uuid(),
  email: z.string().email(),
  name: z.string().min(2),
  createdAt: z.date(),
});

type User = z.infer<typeof UserSchema>;

tRPC Router

import { router, publicProcedure } from './trpc';

export const userRouter = router({
  getById: publicProcedure
    .input(z.string().uuid())
    .query(async ({ input }) => {
      return db.user.findUnique({ where: { id: input } });
    }),
});

Sonuç

Bu stack ile frontend ve backend arasında sıfır type mismatch. Refactoring cesaretle yapılır.