تدرج الإعدادات والقيم الافتراضية
ادمجوا القيم الافتراضية والملفات وتجاوزات البيئة
تدرج الإعدادات والقيم الافتراضية درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 4 دروس في المجموع.
الإعدادات على طبقات
تجمع التطبيقات الفعلية الإعدادات من عدة مصادر: القيم الافتراضية المدمجة، وملف إعدادات، وتجاوزات البيئة. وتتجاوز الطبقات اللاحقة الطبقات السابقة وفق ترتيب أولوية محدد.
ترتيب الأولوية
ترتيب شائع من الأقل إلى الأعلى أولوية: القيم الافتراضية < إعدادات الملف < متغيرات البيئة. وتفوز تجاوزات البيئة لأنها مناسبة للتعديلات الخاصة بكل عملية نشر.
تعريف الطبقات
كل طبقة هي إعدادات جزئية. ولا يلزم أن تكون كاملةً سوى القيم الافتراضية الأساسية؛ أما الطبقات الأخرى فتملأ حقولًا محددة أو تتجاوزها.
interface Config { port: number; host: string; logLevel: string; }
const defaults: Config = { port: 3000, host: "localhost", logLevel: "info" };التجاوزات الجزئية
تكون طبقتا الملف والبيئة من النوع Partial<Config>، لأنهما قد تحددان بعض المفاتيح فقط. ويعكس تحديدهما كإعدادات جزئية إمكانية غياب أي حقل.
const fileConfig: Partial<Config> = { port: 8080 };
const envConfig: Partial<Config> = { logLevel: "debug" };الدمج السطحي
بالنسبة إلى الإعدادات المسطحة، يطبّق الدمج باستخدام عامل الانتشار الأولوية بطريقة واضحة. إذ تتجاوز الكائنات اللاحقة المفاتيح السابقة، فتنتج الإعدادات النهائية.
const config: Config = { ...defaults, ...fileConfig, ...envConfig };
// { port: 8080, host: "localhost", logLevel: "debug" }لماذا يهم الترتيب
بما أن الانتشار يجعل العنصر اللاحق هو الفائز، فإن المصدر المدرج أخيرًا يملك أعلى أولوية. أعد ترتيب عمليات الانتشار، فتغيّر الطبقة التي تتجاوز الأخرى.
تحتاج الإعدادات المتداخلة إلى دمج عميق
يستبدل الانتشار السطحي الكائنات المتداخلة كاملةً. وإذا كانت الإعدادات تحتوي على أقسام متداخلة، فأنت بحاجة إلى دمج عميق يجمعها تكراريًا بدلًا من استبدالها.
interface Config { db: { host: string; port: number }; }
// { ...a, ...b } would replace the entire db object, losing keys.دمج عميق مقيّد بالأنواع
يتنقل الدمج التكراري عبر الكائنين، ويتعمق في السجلات المتداخلة، ويتجاوز القيم النهائية. ويتطلب تحديد نوع الناتج مساعد نوع تكراريًا.
type DeepPartial<T> = { [K in keyof T]?: DeepPartial<T[K]> };
function deepMerge<T>(base: T, over: DeepPartial<T>): T {
const out: any = { ...base };
for (const k in over) {
const v = (over as any)[k];
out[k] = v && typeof v === "object" ? deepMerge((base as any)[k], v) : v;
}
return out;
}DeepPartial لطبقات التجاوز
تُحدَّد طبقات التجاوز بالنوع DeepPartial<Config>، بحيث يمكنها تحديد أي مجموعة فرعية من المفاتيح المتداخلة مع بقائها خاضعة للتحقق النوعي وفق البنية الكاملة.
const override: DeepPartial<Config> = { db: { port: 5433 } };
// merges into db without dropping db.hostالدمج مع التحقق
ادمج أولًا، ثم تحقّق من الناتج باستخدام مخطط. وبهذه الطريقة تكون الإعدادات النهائية المحلولة بالكامل هي التي يجري التحقق من صحتها.
// const merged = deepMerge(defaults, override);
// const config = ConfigSchema.parse(merged);أفضل ممارسات الطبقات
حافظ على اكتمال القيم الافتراضية وأمانها، ودع الملفات تعبّر عن الإعدادات الخاصة بكل بيئة، واحتفظ بمتغيرات البيئة للأسرار والتجاوزات الخاصة بكل عملية نشر في أعلى سلسلة الأولوية.
تحقق سريع
تحقق سريع من هذا الدرس.
مراجعة
تدمج الإعدادات متعددة الطبقات القيم الافتراضية وإعدادات الملف وتجاوزات البيئة وفق ترتيب الأولوية (القيم الافتراضية < الملف < البيئة). تستخدم الإعدادات المسطحة الانتشار، بينما تحتاج الإعدادات المتداخلة إلى دمج عميق مقيّد بالنوع DeepPartial<Config>. تحقّق من الناتج المدمج.
الأسئلة الشائعة
هل درس «تدرج الإعدادات والقيم الافتراضية» مجاني؟
نعم — نص درس «تدرج الإعدادات والقيم الافتراضية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 4 دروس في المجموع.
ماذا ستتعلم في «تدرج الإعدادات والقيم الافتراضية»؟
ادمجوا القيم الافتراضية والملفات وتجاوزات البيئة تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟
لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «تدرج الإعدادات والقيم الافتراضية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟
نعم. كل درس في TypeScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تحديد أنواع متغيرات البيئة
- إعدادات تم التحقق منها بالمخطط
- تدرج الإعدادات والقيم الافتراضية
- الأسرار والأمان النوعي