Görev Durumunu Değiştirme Fonksiyonu
Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası. Ders 47 / 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 getTaskInfofonksiyonuaddTaskfonksiyonuinitialTasksveupdatedTasksdizileri
Üç parametre alan changeTaskStatus adında bir fonksiyon oluşturun:
Task[]tipindetaskList(Task nesnelerinden oluşan bir dizi)numbertipindetaskId(güncellenecek görevin ID'si)'todo' | 'in-progress' | 'done'tipindenewStatus(görevin yeni durumu)
Fonksiyon şunları yapmalıdır:
- Görev listesinde eşleşen ID'ye sahip görevi bulmalı
- O görevin durumunu yeni durumla güncellemeli
- Güncellenmiş görevi içeren yeni bir dizi döndürmeli (orijinal diziyi değiştirmeyin)
- Verilen ID'ye sahip bir görev bulunamazsa, orijinal diziyi değiştirmeden döndürmeli
firstTask, secondTask ve thirdTask değişkenlerini içeren Task[] tipinde testTasks adında bir değişken oluşturun.
changeTaskStatus fonksiyonunuzu şunları yapmak için kullanın:
- ID'si
1olan görevin durumunu'in-progress'olarak değiştirin ve sonucuprogressTasksdeğişkeninde saklayın progressTasksiçindeki ID'si2olan görevin durumunu'done'olarak değiştirin ve sonucucompletedTasksdeğişkeninde saklayın
Aşağıdaki çıktıları ayrı satırlara yazdırın:
testTasksdizisindeki ilk görevlegetTaskInfofonksiyonunu çağırın ve sonucu yazdırınprogressTasksdizisindeki ilk görevlegetTaskInfofonksiyonunu çağırın ve sonucu yazdırıncompletedTasksdizisindeki ikinci görevlegetTaskInfofonksiyonunu çağırın ve sonucu yazdırıntestTasksdizisindeki ilk görevin durumunu yazdırıncompletedTasksdizisindeki ikinci görevin durumunu yazdırın
Kendin dene
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);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