Menu
Coddy logo textTech

Funktion: Aufgabenübersicht ausgeben

Teil des Abschnitts Einführung in TypeScript der JavaScript-Journey von Coddy. Lektion 49 von 73.

challenge icon

Aufgabe

Einfach

Dir steht Folgendes aus der vorherigen Herausforderung zur Verfügung:

  • Das Task-Interface mit id (number), title (string) und status (Literaltyp)
  • Drei Task-Variablen: firstTask, secondTask und thirdTask
  • Die Funktion getTaskInfo
  • Die Funktion addTask
  • Die Funktion changeTaskStatus
  • Die Funktion listTasksByStatus
  • Die Arrays initialTasks, updatedTasks, testTasks, progressTasks, completedTasks, mixedTasks, todoTasks, inProgressTasks und doneTasks

Erstelle eine Funktion namens printTaskSummary, die einen Parameter entgegennimmt:

  • task vom Typ Task (ein einzelnes Task-Objekt)

Die Funktion sollte:

  • Eine formatierte Zusammenfassung in genau folgendem Format auf der Konsole ausgeben: "ID: [id], Title: [title], Status: [status]"
  • Den Rückgabetyp void haben

Erstelle eine Funktion namens printAllTaskSummaries, die einen Parameter entgegennimmt:

  • taskList vom Typ Task[] (ein Array von Task-Objekten)

Die Funktion sollte:

  • Eine Schleife verwenden, um printTaskSummary für jede Aufgabe im Array aufzurufen
  • Den Rückgabetyp void haben

Erstelle eine Variable namens sampleTasks vom Typ Task[], die die folgenden Aufgaben enthält:

  • Eine Aufgabe mit der ID 101, dem Titel "Design user interface" und dem Status 'todo'
  • Eine Aufgabe mit der ID 102, dem Titel "Implement authentication" und dem Status 'in-progress'
  • Eine Aufgabe mit der ID 103, dem Titel "Deploy to production" und dem Status 'done'

Gib die folgenden Ausgaben aus:

  • Rufe printTaskSummary mit firstTask auf
  • Rufe printTaskSummary mit der zweiten Aufgabe aus sampleTasks auf
  • Rufe printAllTaskSummaries mit sampleTasks auf
  • Rufe printTaskSummary mit der letzten Aufgabe aus doneTasks auf

Probier es selbst

// Task interface and previous code from earlier 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
  );
}

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');

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

// Create mixedTasks array
const mixedTasks: Task[] = [firstTask, secondTask, thirdTask];

// Filter tasks by status
const todoTasks = listTasksByStatus(mixedTasks, 'todo');
const inProgressTasks = listTasksByStatus(mixedTasks, 'in-progress');
const doneTasks = listTasksByStatus(mixedTasks, 'done');

// Print the required outputs
console.log(mixedTasks.length);
console.log(todoTasks.length);
console.log(inProgressTasks.length);
console.log(doneTasks.length);
console.log(getTaskInfo(todoTasks[0]));
console.log(getTaskInfo(inProgressTasks[0]));
console.log(getTaskInfo(doneTasks[0]));

Alle Lektionen in Einführung in TypeScript

Übe selbstständig: Online-JavaScript-Compiler