TypeScript و PostgreSQL: دليل شامل لبناء خلفية موثوقة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: لماذا يعتبر TypeScript و PostgreSQL ثنائيًا مثاليًا لمشروعك

\n\n

هل تساءلت يومًا لماذا يختار المطورون بشكل متزايد مزيج TypeScript و PostgreSQL؟ هذا ليس مجرد اتجاه عصري - إنه ثنائي قوي يغير قواعد اللعبة في تطوير الويب الحديث. تخيل سكينًا سويسريًا وخزنة آمنة في آن واحد: TypeScript يضفي على الكود الدقة والقابلية للتنبؤ، بينما يوفر PostgreSQL الموثوقية والمرونة في تخزين البيانات.

\n\n

في هذا الدليل، لن نمر على النظرية فقط. سنغوص في الممارسة العملية الحقيقية: سنقوم بإعداد الاتصال، كتابة الاستعلامات، إنشاء واجهات برمجة تطبيقات، وسنتعرف على كيفية تجنب الأخطاء الشائعة. هل أنت مستعد؟ لنبدأ!

\n\n

إعداد البيئة: من أين تبدأ العمل مع TypeScript و PostgreSQL

\n\n

قبل كتابة الكود، دعنا نجهز الأرضية. تثبيت التبعيات يشبه أساس المنزل: كلما كان أقوى، كلما طال عمر المشروع.

\n\n

تثبيت الحزم الضرورية

\n\n

سنحتاج إلى أداتين رئيسيتين: pg (عميل PostgreSQL) و typescript مع الأنواع. نفذ في الطرفية:

\n\n
npm init -y\nnpm install pg\nnpm install -D typescript @types/node @types/pg\nnpx tsc --init\n
\n\n

لاحظ: نقوم بتثبيت أنواع pg بشكل منفصل. هذا شرط أساسي للعمل مع قاعدة بيانات TypeScript - وإلا سيعترض المترجم على عدم وجود الأنواع.

\n\n

الهيكل الأساسي للمشروع

\n\n

أنشئ ملف database.ts - سيكون هذا قلب الاتصال. إليك قالبًا بسيطًا ولكنه عملي:

\n\n
import { Pool } from 'pg';\n\nconst pool = new Pool({\n  user: 'your_username',\n  host: 'localhost',\n  database: 'your_database',\n  password: 'your_password',\n  port: 5432,\n});\n\nexport default pool;\n
\n\n

لماذا Pool وليس عميلًا عاديًا؟ Pool يدير مجموعة من الاتصالات، وهو أمر بالغ الأهمية للإنتاج. تخيل أن كل طلب هو زائر لمقهى. بدون مجموعة، ستفتح مقهى جديد لكل عميل. مع المجموعة - لديك بالفعل عدة طاولات، وتجلس الضيوف ببساطة.

\n\n

العمليات الأساسية: CRUD باستخدام TypeScript مع PostgreSQL

\n\n

الآن الجزء الممتع - كتابة الاستعلامات. سننشئ جدول مستخدمين بسيط وننفذ جميع العمليات الأربع: إنشاء، قراءة، تحديث، حذف.

\n\n

إنشاء الجدول

\n\n

قبل العمل مع البيانات، نحتاج إلى إنشاء الهيكل. إليك كيفية القيام بذلك عبر TypeScript:

\n\n
import pool from './database';\n\nasync function createTable() {\n  const query = `\n    CREATE TABLE IF NOT EXISTS users (\n      id SERIAL PRIMARY KEY,\n      name VARCHAR(100) NOT NULL,\n      email VARCHAR(255) UNIQUE NOT NULL,\n      age INTEGER CHECK (age > 0),\n      created_at TIMESTAMP DEFAULT NOW()\n    );\n  `;\n  \n  try {\n    await pool.query(query);\n    console.log('تم إنشاء جدول users');\n  } catch (error) {\n    console.error('خطأ:', error);\n  }\n}\n\ncreateTable();\n
\n\n

لاحظ SERIAL - هذا هو التزايد التلقائي الذي يولده PostgreSQL بنفسه. و CHECK يضمن أن العمر سيكون موجبًا. هذا مثال على كيف يعمل PostgreSQL TypeScript معًا لضمان سلامة البيانات على مستويين.

\n\n

إضافة البيانات (Create)

\n\n

الإدراج مع المعاملات - طريقة آمنة لتجنب حقن SQL:

\n\n
interface User {\n  name: string;\n  email: string;\n  age: number;\n}\n\nasync function addUser(user: User) {\n  const query = `\n    INSERT INTO users (name, email, age)\n    VALUES ($1, $2, $3)\n    RETURNING *;\n  `;\n  \n  const values = [user.name, user.email, user.age];\n  \n  try {\n    const result = await pool.query(query, values);\n    console.log('تمت إضافة المستخدم:', result.rows[0]);\n    return result.rows[0];\n  } catch (error) {\n    console.error('خطأ أثناء الإضافة:', error);\n    throw error                

المدونات

توصيات الكتب