Menu
Coddy logo textTech

Fonksiyon: Görevleri Duruma Göre Listeleme

Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası. Ders 48 / 73.

challenge icon

Görev

Kolay

Önceki görevden size aşağıdakiler sağlanmıştır:

  • id (number), title (string) ve status (literal type) özelliklerine sahip Task arayüzü
  • Üç görev değişkeni: firstTask, secondTask ve thirdTask
  • getTaskInfo fonksiyonu
  • addTask fonksiyonu
  • changeTaskStatus fonksiyonu
  • initialTasks, updatedTasks, testTasks, progressTasks ve completedTasks dizileri

İki parametre alan listTasksByStatus adında bir fonksiyon oluşturun:

  • Task[] tipinde taskList (Task nesnelerinden oluşan bir dizi)
  • 'todo' | 'in-progress' | 'done' tipinde status (filtrelenecek durum)

Fonksiyon şunları yapmalıdır:

  • Yalnızca belirtilen durumla eşleşen görevleri içeren yeni bir dizi döndürmek için dizinin filter metodunu kullanın
  • Filtrelenmiş görev dizisini döndürün

Orijinal üç görevin (firstTask, secondTask ve thirdTask) tümünü içeren Task[] tipinde mixedTasks adında bir değişken oluşturun.

Aşağıdaki filtrelenmiş dizileri oluşturmak için listTasksByStatus fonksiyonunuzu kullanın:

  • mixedTasks dizisini 'todo' durumu için filtreleyin ve sonucu todoTasks değişkeninde saklayın
  • mixedTasks dizisini 'in-progress' durumu için filtreleyin ve sonucu inProgressTasks değişkeninde saklayın
  • mixedTasks dizisini 'done' durumu için filtreleyin ve sonucu doneTasks değişkeninde saklayın

Aşağıdaki çıktıları ayrı satırlara yazdırın:

  • mixedTasks dizisinin uzunluğunu yazdırın
  • todoTasks dizisinin uzunluğunu yazdırın
  • inProgressTasks dizisinin uzunluğunu yazdırın
  • doneTasks dizisinin uzunluğunu yazdırın
  • todoTasks dizisindeki ilk görev ile getTaskInfo fonksiyonunu çağırın ve sonucu yazdırın
  • inProgressTasks dizisindeki ilk görev ile getTaskInfo fonksiyonunu çağırın ve sonucu yazdırın
  • doneTasks dizisindeki ilk görev ile getTaskInfo fonksiyonunu çağırın ve sonucu yazdırın

Kendin dene

// Task interface and variables 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];
}

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

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

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

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

// Use changeTaskStatus function
const progressTasks = changeTaskStatus(testTasks, 1, 'in-progress');
const completedTasks = changeTaskStatus(progressTasks, 2, 'done');

// Print the required outputs
console.log(getTaskInfo(testTasks[0]));
console.log(getTaskInfo(progressTasks[0]));
console.log(getTaskInfo(completedTasks[1]));
console.log(testTasks[0].status);
console.log(completedTasks[1].status);

TypeScript'e Giriş bölümündeki tüm dersler

Kendi başına pratik yap: Online JavaScript derleyicisi