📘 مميز

Drizzle-Type

أنواع TypeScript لـ Drizzle ORM (ORM Type Definitions)

(4/5)
👁️ 5 مشاهدة
📅 02 Jul 2026
⚛️ React 💚 Vue.js 🅰️ Angular 🧡 Svelte 🌐 عام

مستوى الخبرة المطلوب:

⚡ متوسط 🚀 محترف 🏢 مؤسسي
🔗 زيارة الموقع الرسمي
4
تقييم المستخدمين
التصنيف 📘 TypeScript
المشاهدات 5
تاريخ الإضافة 02/07/2026
آخر تحديث 02/07/2026

📖 الوصف

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 قد تكون غامضة

🔄 البدائل

أدوات بديلة يمكنك استخدامها

Prisma types
TypeORM types
SQL.ts/Handwritten types

💻 مثال على الاستخدام

كيفية استخدام هذه الأداة

Example Code
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

قد يعجبك أيضاً