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.
Görev
KolayÖnceki görevden size aşağıdakiler sağlanmıştır:
id(number),title(string) vestatus(literal type) özelliklerine sahipTaskarayüzü- Üç görev değişkeni:
firstTask,secondTaskvethirdTask getTaskInfofonksiyonuaddTaskfonksiyonuchangeTaskStatusfonksiyonuinitialTasks,updatedTasks,testTasks,progressTasksvecompletedTasksdizileri
İki parametre alan listTasksByStatus adında bir fonksiyon oluşturun:
Task[]tipindetaskList(Task nesnelerinden oluşan bir dizi)'todo' | 'in-progress' | 'done'tipindestatus(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
filtermetodunu 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:
mixedTasksdizisini'todo'durumu için filtreleyin ve sonucutodoTasksdeğişkeninde saklayınmixedTasksdizisini'in-progress'durumu için filtreleyin ve sonucuinProgressTasksdeğişkeninde saklayınmixedTasksdizisini'done'durumu için filtreleyin ve sonucudoneTasksdeğişkeninde saklayın
Aşağıdaki çıktıları ayrı satırlara yazdırın:
mixedTasksdizisinin uzunluğunu yazdırıntodoTasksdizisinin uzunluğunu yazdırıninProgressTasksdizisinin uzunluğunu yazdırındoneTasksdizisinin uzunluğunu yazdırıntodoTasksdizisindeki ilk görev ilegetTaskInfofonksiyonunu çağırın ve sonucu yazdırıninProgressTasksdizisindeki ilk görev ilegetTaskInfofonksiyonunu çağırın ve sonucu yazdırındoneTasksdizisindeki ilk görev ilegetTaskInfofonksiyonunu ç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
1TS ile Başlarken
TypeScript Nedir?Neden TypeScript Kullanılır?İlk TypeScript KodunuzDerleme Süreci ve HatalarÖzet: TS'ye Giriş4Fonksiyonlarla Çalışmak
Parametre ve Dönüş Değerlerini TiplendirmeArrow Fonksiyonlarını Tiplendirme'void' Dönüş Tipi'?' ile Opsiyonel ParametrelerVarsayılan Parametre DeğerleriRest Parametrelerini TiplendirmeFonksiyon Tiplerini TanımlamaÖzet: Tiplendirilmiş Fonksiyonlar Oluşturma7Proje: Basit Bir Görev Listesi
Proje: Görev Struct'ını TanımlamaGörev Ekleme Fonksiyonu2Temel Tipler
Temel Tipler: str, num, boolean'any' Tipi: Kaçış Yolu'unknown' Tipi'null' ve 'undef' ile ÇalışmakTip Çıkarımı İş BaşındaAçık Tip BelirlemeleriÖzet: Temel Tipler Pratiği5Tipler: Takma Adlar, Unionlar ve Kesişimler
İlkel Tipler için Tip Takma AdlarıUnion Tipler ('|')Union Tipler ile ÇalışmakLiteral TiplerKesişim Tipleri ('&')Tip Takma Adlarını BirleştirmeÖzet: Gelişmiş Tip Kombinasyonları3Veri Yapısı: Diziler ve Tuple
Tipli DizilerDiziler için 'readonly' BelirleyicisiTuple Nedir?Tuple Tanımlama ve ErişmeTuple DestructuringReadonly Tuple'larÇok Boyutlu Tipli DizilerDizilerle Spread OperatörüÖzet: Diziler ve Tuple'lar6Nesneleri ve Interface'leri Tiplendirme
Satır İçi Nesne Tipi BelirtimleriNesneler için Type Alias KullanımıInterface'lere GirişInterface'ler ve Type Alias'ların KarşılaştırılmasıOpsiyonel ve Readonly ÖzelliklerInterface ve Tipleri GenişletmeInterface'lere Metot EklemeÖzet: Nesne Yapılarını TanımlamaKendi başına pratik yap: Online JavaScript derleyicisi