شعار أوراباسي
aurabaseمستندات
مستندات›أدلة›Generate TypeScript types

قم بإنشاء أنواع TypeScript من قاعدة البيانات الخاصة بك

أمر واحد يحول الجداول الخاصة بك إلى أنواع. يقوم المحرر الخاص بك بعد ذلك برفض عمود خاطئ أو قيمة خاطئة قبل تشغيل أي شيء.

4 د قراءة·المستوى مبتدئ·تمت المراجعة في 12‏/10‏/2026
تم إنشاء هذا النص الإنجليزي تلقائيًا من النص الأصلي الفرنسي ولم تتم مراجعته بعد.
تمت ترجمة هذه الصفحة تلقائيًا. النسخة الإنجليزية موثوقة.
#
إنشاء

1. قم بإنشاء الملف

terminalbash
npx @aurabase/gen --url https://my-app.aurabase.cloud --key "$AURA_ANON_KEY" --out src/types/database.types.ts

تقرأ الأداة مخطط مشروعك وتكتب الملف. بدون --url و --key، فإنه يبحث عن AURABASE_URL و AURABASE_ANON_KEY (أيضًا NEXT_PUBLIC_AURABASE_URL و VITE_AURABASE_URL و AURABASE_SERVICE_ROLE_KEY) في بيئتك وفي .env و .env.local و .env.development.

في مشروع يحتوي على جدولين ووظيفتين، أجاب:

text
[aurabase-gen] ✓ Types écrits dans /tmp/database.types.ts (2 table(s), 2 fonction(s), 0 enum(s), 0 vue(s)).

قم بتشغيله مرة أخرى كلما تغير المخطط. أضف --schema <name> لمخطط آخر غير public و--type-name لإعادة تسمية النوع الرئيسي.

#
استخدم

2. استخدمه مع العميل

src/lib/aurabase.tstypescript
import { createClient } from '@aurabase/aurabase-js'
import type { Database } from '../types/database.types'

export const aura = createClient<Database>(process.env.AURA_URL!, process.env.AURA_ANON_KEY!)

يصف النوع الذي تم إنشاؤه كل جدول بـ Row و Insert و Update. مقابل ملف حقيقي، أعطى المترجم هذه النتائج:

checked.tstypescript
const { data } = await aura.from('todos').select('id, title, done')
const title: string | undefined = data?.[0]?.title   // حسنا

const wrong: number | undefined = data?.[0]?.title   // خطأ: السلسلة غير قابلة للتخصيص لرقم
await aura.from('todos').insert({ title: 1 })         // خطأ: الرقم غير قابل للتخصيص للسلسلة
await aura.from('todos').insert({ title: 'ok' })      // حسنًا: الأعمدة الأخرى لها إعدادات افتراضية

في Insert، يكون العمود الذي يحتوي على عمود افتراضي أو عمود لاغٍ اختياريًا. في Update، كل عمود اختياري.

#
مساعدين

3. أنواع الصفوف لمكوناتك

Todo.tsxtypescript
import type { Tables, TablesInsert, TablesUpdate, Enums } from '../types/database.types'

type Todo = Tables<'todos'>             // صف، كما قرأت
type NewTodo = TablesInsert<'todos'>    // ما يقبله الإدراج ().
type TodoPatch = TablesUpdate<'todos'>  // ما التحديث () يقبل

Enums<'name'> يعطي قيم تعداد قاعدة البيانات.

#
حدود

4. ما يتم فحصه

  • الجدول غير الموجود في الملف الذي تم إنشاؤه هو وليس مرفوض: aura.from('anything') لا يزال يتم تجميعه، ولم يتم كتابة صفوفه.
  • تظهر الوظائف ضمن Functions مع وسيطاتها. تظهر الدالة التي ترجع نوع صف مخصص كـ Json أو unknown.
  • يعكس الملف المخطط في الوقت الذي قمت بإنشائه. العمود الذي تمت إضافته لاحقًا يكون غير معروف للأنواع حتى تقوم بتشغيل الأداة مرة أخرى.
  • استخدم المفتاح العام لإنشاء الأنواع ما لم يتم إخفاء بعض الجداول منه. لا تلتزم مطلقًا بمفتاح service_role.