دالة: إضافة عناصر إلى المخزون
جزء من قسم مقدمة إلى TypeScript في رحلة JavaScript على Coddy. الدرس 64 من 73.
التحدي
سهللقد تم تزويدك بما يلي من التحدي السابق:
- الواجهة العامة
InventoryItem<T>مع الخصائصidوquantityوdetails - ثلاثة عناصر مخزون:
bookItemوelectronicItemوclothingItem
أنشئ دالة عامة باسم addItem تقوم بإضافة عنصر جديد إلى مصفوفة مخزون موجودة.
يجب أن تقوم الدالة بما يلي:
- استخدام معامل نوع عام
T - قبول معامل
inventoryمن النوعInventoryItem<T>[] - قبول معامل
newItemمن النوعInventoryItem<T> - إرجاع مصفوفة جديدة من النوع
InventoryItem<T>[]تحتوي على جميع العناصر الموجودة بالإضافة إلى العنصر الجديد - أن تحتوي على توضيح صريح لنوع القيمة المرجعة
أنشئ المصفوفات التالية واختبر دالتك:
- أنشئ
bookInventoryكمصفوفة تحتوي فقط علىbookItem - أنشئ
newBookمن النوعInventoryItem<{ title: string; author: string }>مع:id: 4quantity: 2details: { title: "Advanced TypeScript", author: "Jane Smith" }
- استخدم
addItemلإضافةnewBookإلىbookInventoryوقم بتخزين النتيجة فيupdatedBookInventory
- أنشئ
electronicInventoryكمصفوفة تحتوي فقط علىelectronicItem - أنشئ
newElectronicمن النوعInventoryItem<{ brand: string; model: string }>مع:id: 5quantity: 1details: { brand: "GadgetCorp", model: "Z500" }
- استخدم
addItemلإضافةnewElectronicإلىelectronicInventoryوقم بتخزين النتيجة فيupdatedElectronicInventory
اطبع المخرجات التالية:
- اطبع طول
updatedBookInventory - اطبع
updatedBookInventory[1].details.title - اطبع
updatedBookInventory[1].details.author - اطبع طول
updatedElectronicInventory - اطبع
updatedElectronicInventory[1].details.brand - اطبع
updatedElectronicInventory[1].details.model - اطبع
updatedElectronicInventory[0].id - اطبع
updatedElectronicInventory[1].quantity
جرّب بنفسك
// Create the generic InventoryItem interface
interface InventoryItem<T> {
id: number;
quantity: number;
details: T;
}
// Create the required objects
const bookItem: InventoryItem<{ title: string; author: string }> = {
id: 1,
quantity: 5,
details: { title: "TypeScript Guide", author: "John Doe" }
};
const electronicItem: InventoryItem<{ brand: string; model: string }> = {
id: 2,
quantity: 3,
details: { brand: "TechCorp", model: "X200" }
};
const clothingItem: InventoryItem<{ size: string; color: string }> = {
id: 3,
quantity: 10,
details: { size: "M", color: "Blue" }
};
// Print the required outputs
console.log(bookItem.id);
console.log(bookItem.quantity);
console.log(bookItem.details.title);
console.log(bookItem.details.author);
console.log(electronicItem.details.brand);
console.log(electronicItem.details.model);
console.log(clothingItem.details.size);
console.log(clothingItem.details.color);جميع دروس مقدمة إلى TypeScript
1البداية مع TS
ما هي TypeScript؟لماذا نستخدم TypeScript؟أول كود TypeScript لكعملية الـ Compilation والأخطاءملخص: مقدمة في TS4التعامل مع الدوال
تحديد أنواع المعاملات وقيم الإرجاعتحديد أنواع Arrow Functionsنوع الإرجاع 'void'المعاملات الاختيارية باستخدام '?'القيم الافتراضية للمعاملاتتحديد أنواع Rest Parametersتعريف أنواع الدوالملخص: بناء دوال محددة الأنواع7مشروع: قائمة مهام بسيطة
مشروع: تعريف الـ Struct للمهمةدالة لإضافة مهمة10مشروع: إدارة المخزون
مشروع: عنصر مخزون عامدالة: إضافة عناصر إلى المخزون2الأنواع الأساسية
الأنواع الأساسية: str, num, booleanالنوع 'any': مخرج الهروبالنوع 'unknown'التعامل مع 'null' و 'undef'استنتاج الأنواع في التطبيق العمليتوضيحات الأنواع الصريحةمراجعة: تدريب على الأنواع الأساسية5الأنواع: الأسماء المستعارة، الاتحادات والتقاطعات
الأسماء المستعارة للأنواع الأساسية (Primitives)أنواع الاتحاد ('|')التعامل مع أنواع الاتحادالأنواع الحرفية (Literal Types)أنواع التقاطع ('&')دمج الأسماء المستعارة للأنواعملخص: تركيبات الأنواع المتقدمة3هياكل البيانات: المصفوفات و Tuple
المصفوفات محددة النوع (Typed Arrays)معدل 'readonly' للمصفوفاتما هو الـ Tuple؟تعريف والوصول إلى الـ Tuplesتفكيك الـ Tuples (Destructuring)الـ Tuples للقراءة فقط (Readonly)المصفوفات محددة النوع متعددة الأبعاداستخدام Spread Operator مع المصفوفاتملخص: المصفوفات و Tuples6تحديد أنواع الكائنات والواجهات
توصيف أنواع الكائنات المضمنة (Inline)الأسماء المستعارة للأنواع (Type Aliases) للكائناتمقدمة عن الواجهات (Interfaces)الواجهات (Interfaces) مقابل الأسماء المستعارة للأنواع (Type Aliases)الخصائص الاختيارية وخصائص القراءة فقط (Readonly)توسيع الواجهات والأنواعإضافة الدوال (Methods) إلى الواجهاتملخص: تحديد هياكل الكائناتتدرّب بنفسك: مترجم JavaScript عبر الإنترنت