Menu
CoddyTech

Funktion zum Ändern des Aufgabenstatus

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

challenge icon

Aufgabe

Einfach

Dir liegt Folgendes aus der vorherigen Herausforderung vor:

  • das Task-Interface mit id (number), title (string) und status (Literaltyp)
  • drei Aufgabenvariablen: firstTask, secondTask und thirdTask
  • die Funktion getTaskInfo
  • die Funktion addTask
  • die Arrays initialTasks und updatedTasks

Erstelle eine Funktion namens changeTaskStatus, die drei Parameter entgegennimmt:

  • taskList vom Typ Task[] (ein Array von Task-Objekten)
  • taskId vom Typ number (die ID der zu aktualisierenden Aufgabe)
  • newStatus vom Typ 'todo' | 'in-progress' | 'done' (der neue Status der Aufgabe)

Die Funktion soll:

  • die Aufgabe mit der übereinstimmenden ID in der Aufgabenliste finden
  • den Status dieser Aufgabe auf den neuen Status aktualisieren
  • ein neues Array mit der aktualisierten Aufgabe zurückgeben (das ursprüngliche Array nicht verändern)
  • wenn keine Aufgabe mit der angegebenen ID gefunden wird, das ursprüngliche Array unverändert zurückgeben

Erstelle eine Variable namens testTasks vom Typ Task[], die firstTask, secondTask und thirdTask enthält.

Verwende deine Funktion changeTaskStatus, um:

  • den Status der Aufgabe mit der ID 1 in 'in-progress' zu ändern und das Ergebnis in progressTasks zu speichern
  • den Status der Aufgabe mit der ID 2 in progressTasks in 'done' zu ändern und das Ergebnis in completedTasks zu speichern

Gib die folgenden Ausgaben in separaten Zeilen aus:

  • getTaskInfo mit der ersten Aufgabe aus testTasks aufrufen und das Ergebnis ausgeben
  • getTaskInfo mit der ersten Aufgabe aus progressTasks aufrufen und das Ergebnis ausgeben
  • getTaskInfo mit der zweiten Aufgabe aus completedTasks aufrufen und das Ergebnis ausgeben
  • den Status der ersten Aufgabe in testTasks ausgeben
  • den Status der zweiten Aufgabe in completedTasks ausgeben

Probier es selbst

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];
}

const initialTasks: Task[] = [firstTask, secondTask];

const updatedTasks: Task[] = addTask(initialTasks, "Review code changes");

console.log(initialTasks.length);
console.log(updatedTasks.length);
console.log(getTaskInfo(updatedTasks[updatedTasks.length - 1]));
console.log(updatedTasks[updatedTasks.length - 1].title);
console.log(updatedTasks[updatedTasks.length - 1].status);

Alle Lektionen in Einführung in TypeScript

Übe selbstständig: TypeScript-Playground