Typescript ile Tip Güvenli Backend Geliştirme

JavaScript'in dinamik tip sistemi, hızlı prototipleme için harika olsa da, büyüyen projelerde runtime hatalarına davetiye çıkarır. TypeScript, bu sorunu compile-time'da yakalayarak çözüyor, ancak gerçek tip güvenliği için sadece TypeScript kullanmak yetmez.
Runtime Validasyon: Zod
TypeScript tipleri compile-time'da çalışır, runtime'da yok olur. Dışarıdan gelen veriler (API request, DB response, env variables) için runtime validasyon şart:
import { z } from 'zod';
// Schema tanımı
const UserSchema = z.object({
id: z.string().uuid(),
email: z.string().email(),
name: z.string().min(2).max(100),
role: z.enum(['admin', 'user', 'moderator']),
createdAt: z.string().datetime(),
});
// Tip otomatik çıkarılır
type User = z.infer<typeof UserSchema>;
// Kullanım
function createUser(input: unknown): User {
return UserSchema.parse(input); // Geçersizse ZodError fırlatır
}
Pro Tip
Zod şemalarınızı tek bir yerde tanımlayın ve hem API validasyonu hem de TypeScript tipleri için kullanın. Bu, "single source of truth" sağlar.
Tip Güvenli API Katmanları
Express route'larında tip güvenliği:
import { Request, Response } from 'express';
const CreateUserBody = z.object({
email: z.string().email(),
name: z.string().min(2),
});
app.post('/api/users', (req: Request, res: Response) => {
const result = CreateUserBody.safeParse(req.body);
if (!result.success) {
return res.status(400).json({ errors: result.error.flatten() });
}
// result.data artık tam tipli
const user = await userService.create(result.data);
return res.status(201).json(user);
});
Performans Metrikleri
TypeScript + Zod entegrasyonu sonrası:
- Runtime hata oranı: %80 azaldı
- Code review süresi: %30 kısaldı (tipler dokümantasyon görevi görüyor)
- Onboarding süresi: Yeni geliştiriciler %50 daha hızlı üretken
Sonuç
TypeScript tek başına yeterli değildir. Zod gibi runtime validasyon kütüphaneleri ile birleştirildiğinde, compile-time'dan runtime'a uzanan uçtan uca tip güvenliği sağlanır. Bu, büyüyen projelerde en değerli yatırımlardan biridir.
Burak A.
Backend Dev @ Varien. 10 yılı aşkın süredir Engineering alanında projeler geliştiriyor.

