📋 محتويات الصفحة
📖 الوصف
Drizzle ORM يُوفر نظام أنواع (type system) قوي يسمح بالـ type safety الكامل عند التعامل مع قاعدة البيانات. هذا الملف يغطي كيفية الاستفادة من الأنواع في Drizzle ORM مثل `InferSelectModel`, `InferInsertModel`, وأنواع الـ queries لبناء تطبيقات type-safe. Drizzle يُشتهر بـ "headless TypeScript ORM" – ي...
🎯 يستخدم في
مجالات استخدام هذه الأداة
استنتاج أنواع السجلات من Drizzle schema
بناء DTOs type-safe من models
Type-safe database queries
بناء APIs مع نوع النتائج مستنتج من الـ schema
Validation و type checking للبيانات
✨ المميزات
أبرز مميزات هذه الأداة
Type inference تلقائي من الـ schema
InferSelectModel & InferInsertModel
دعمPartial inserts & selects
Type-safe relations و joins
TypeScript-first API
No codegen – inference فوري
⚠️ العيوب
نقاط يجب مراعاتها
يحتاج فهم عميق للـ TypeScript type system
بعض الأنواع المعقدة تحتاج مساعدة يدوية
قد يكون صعب الـ debugging مع types معقدة
أخطاء TypeScript قد تكون غامضة
🔄 البدائل
أدوات بديلة يمكنك استخدامها
💻 مثال على الاستخدام
كيفية استخدام هذه الأداة
import { pgTable, serial, text, varchar } from 'drizzle-orm/pg-core';
import type { InferSelectModel, InferInsertModel } from 'drizzle-orm';
// Define schema
export const users = pgTable('users', {
id: serial('id').primaryKey(),
name: varchar('name', { length: 255 }).notNull(),
email: text('email').notNull().unique(),
});
// Infer types from schema
type User = InferSelectModel<typeof users>;
// { id: number; name: string; email: string; }
type NewUser = InferInsertModel<typeof users>;
// { name: string; email: string; } (id is auto-generated)
// Type-safe queries
import { db } from './db';
const user: User = await db.query.users.findFirst({
where: eq(users.id, 1),
});
// Insert with inferred type
const newUser: NewUser = { name: 'Ahmed', email: 'ahmed@example.com' };
await db.insert(users).values(newUser);
📚 أدوات أخرى في TypeScript
قد يعجبك أيضاً
Prisma-Type
⭐أنواع TypeScript لـ Prisma ORM (ORM Type Definitions)
tRPC
⭐نقل الأنواع من الخادم للواجهة (End-to-End Type Safety)
ts-node
⭐مُشغّل TypeScript (TypeScript Runtime)
tsx
⭐مُشغّل TypeScript سريع (Fast TypeScript Runtime)
TypeChallenges
⭐مصدر تعلم TypeScript عن طريق التحدي (TypeScript Learning Resource)
TypeScript-Powered-Tools
⭐أدوات مبنية على TypeScript (TypeScript Ecosystem Tools)