Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

تجميع كل الأجزاء معاً

جزء من قسم Introduction To TypeScript في رحلة JavaScript على Coddy. الدرس 50 من 73.

challenge icon

التحدي

سهل

يتم تزويدك بما يلي من التحدي السابق:

  • واجهة Task مع id (رقم)، و title (سلسلة نصية)، و status (نوع حرفي)
  • ثلاثة متغيرات للمهام: firstTask، و secondTask، و thirdTask
  • دالة getTaskInfo
  • دالة addTask
  • دالة changeTaskStatus
  • دالة listTasksByStatus
  • دالة printTaskSummary
  • دالة printAllTaskSummaries
  • جميع مصفوفات المهام: initialTasks، و updatedTasks، و testTasks، و progressTasks، و completedTasks، و mixedTasks، و todoTasks، و inProgressTasks، و doneTasks، و sampleTasks

قم بإنشاء سير عمل شامل لإدارة المهام يوضح جميع الوظائف التي قمت ببنائها:

قم بإنشاء متغير باسم projectTasks من نوع Task[] يحتوي على هذه المهام الأولية:

  • مهمة بمعرف 201، وعنوان "Setup development environment"، وحالة 'done'
  • مهمة بمعرف 202، وعنوان "Create project structure"، وحالة 'todo'

قم بإجراء العمليات التالية بالتسلسل:

  1. استخدم addTask لإضافة مهمة جديدة بعنوان "Write documentation" إلى projectTasks وقم بتخزين النتيجة في expandedTasks
  2. استخدم changeTaskStatus لتغيير حالة المهمة ذات المعرف 202 إلى 'in-progress' في expandedTasks وقم بتخزين النتيجة في updatedProjectTasks
  3. استخدم changeTaskStatus لتغيير حالة المهمة المضافة حديثاً (المعرف 3) إلى 'done' في updatedProjectTasks وقم بتخزين النتيجة في finalTasks
  4. استخدم listTasksByStatus لتصفية finalTasks للحالة 'done' وقم بتخزين النتيجة في completedProjectTasks

قم بطباعة المخرجات التالية في أسطر منفصلة:

  • اطبع طول projectTasks
  • اطبع طول finalTasks
  • اطبع طول completedProjectTasks
  • استدعِ printTaskSummary مع المهمة الأولى من completedProjectTasks
  • استدعِ printTaskSummary مع المهمة الأخيرة من completedProjectTasks
  • استدعِ printAllTaskSummaries مع finalTasks

جرّب بنفسك

// Task interface and existing code from previous challenges
interface Task {
    id: number;
    title: string;
    status: 'todo' | 'in-progress' | 'done';
}

const firstTask: Task = {
  id: 1,
  title: "Learn TypeScript interfaces",
  status: "todo"
};

const secondTask: Task = {
  id: 2,
  title: "Build task management app",
  status: "in-progress"
};

const thirdTask: Task = {
  id: 3,
  title: "Write unit tests",
  status: "done"
};

function getTaskInfo(task: Task): string {
    return `Task ${task.id}: ${task.title} - ${task.status}`;
}

function addTask(taskList: Task[], title: string): Task[] {
  const newTask: Task = {
    id: taskList.length + 1,
    title: title,
    status: 'todo'
  };
  return [...taskList, newTask];
}

function changeTaskStatus(taskList: Task[], taskId: number, newStatus: 'todo' | 'in-progress' | 'done'): Task[] {
  return taskList.map(task => 
    task.id === taskId ? { ...task, status: newStatus } : task
  );
}

function listTasksByStatus(tasks: Task[], status: 'todo' | 'in-progress' | 'done'): Task[] {
    return tasks.filter(task => task.status === status);
}

const initialTasks: Task[] = [firstTask, secondTask];
const updatedTasks: Task[] = addTask(initialTasks, "Review code changes");
const testTasks: Task[] = [firstTask, secondTask, thirdTask];
const progressTasks = changeTaskStatus(testTasks, 1, 'in-progress');
const completedTasks = changeTaskStatus(progressTasks, 2, 'done');
const mixedTasks: Task[] = [firstTask, secondTask, thirdTask];

const todoTasks = listTasksByStatus(mixedTasks, 'todo');
const inProgressTasks = listTasksByStatus(mixedTasks, 'in-progress');
const doneTasks = listTasksByStatus(mixedTasks, 'done');

function printTaskSummary(task: Task): void {
    console.log(`ID: ${task.id}, Title: ${task.title}, Status: ${task.status}`);
}

function printAllTaskSummaries(taskList: Task[]): void {
    for (let task of taskList) {
        printTaskSummary(task);
    }
}

const sampleTasks: Task[] = [
    { id: 101, title: "Design user interface", status: 'todo' },
    { id: 102, title: "Implement authentication", status: 'in-progress' },
    { id: 103, title: "Deploy to production", status: 'done' }
];

printTaskSummary(firstTask);
printTaskSummary(sampleTasks[1]);
printAllTaskSummaries(sampleTasks);
printTaskSummary(doneTasks[doneTasks.length - 1]);

جميع دروس Introduction To TypeScript

تدرّب بنفسك: مترجم JavaScript عبر الإنترنت