Hepsini Bir Araya Getirme
Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası. Ders 50 / 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 getTaskInfofonksiyonuaddTaskfonksiyonuchangeTaskStatusfonksiyonulistTasksByStatusfonksiyonuprintTaskSummaryfonksiyonuprintAllTaskSummariesfonksiyonu- Tüm görev dizileri:
initialTasks,updatedTasks,testTasks,progressTasks,completedTasks,mixedTasks,todoTasks,inProgressTasks,doneTasksvesampleTasks
Oluşturduğunuz tüm işlevselliği gösteren kapsamlı bir görev yönetimi iş akışı oluşturun:
Şu başlangıç görevlerini içeren Task[] tipinde projectTasks adında bir değişken oluşturun:
- id değeri
201, title değeri"Setup development environment"ve status değeri'done'olan bir görev - id değeri
202, title değeri"Create project structure"ve status değeri'todo'olan bir görev
Aşağıdaki işlemleri sırasıyla gerçekleştirin:
projectTasksdizisine"Write documentation"başlıklı yeni bir görev eklemek içinaddTaskkullanın ve sonucuexpandedTasksiçinde saklayınexpandedTasksiçindeki ID'si202olan görevin durumunu'in-progress'olarak değiştirmek içinchangeTaskStatuskullanın ve sonucuupdatedProjectTasksiçinde saklayınupdatedProjectTasksiçindeki yeni eklenen görevin (ID3) durumunu'done'olarak değiştirmek içinchangeTaskStatuskullanın ve sonucufinalTasksiçinde saklayınfinalTasksdizisini'done'durumuna göre filtrelemek içinlistTasksByStatuskullanın ve sonucucompletedProjectTasksiçinde saklayın
Aşağıdaki çıktıları ayrı satırlara yazdırın:
projectTasksdizisinin uzunluğunu yazdırınfinalTasksdizisinin uzunluğunu yazdırıncompletedProjectTasksdizisinin uzunluğunu yazdırıncompletedProjectTasksdizisindeki ilk görev ileprintTaskSummaryfonksiyonunu çağırıncompletedProjectTasksdizisindeki son görev ileprintTaskSummaryfonksiyonunu çağırınfinalTasksileprintAllTaskSummariesfonksiyonunu çağırın
Kendin dene
// Task interface and existing code 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];
}
function changeTaskStatus(taskList: Task[], taskId: number, newStatus: 'todo' | 'in-progress' | 'done'): Task[] {
return taskList.map(task =>
task.id === taskId ? { ...task, status: newStatus } : task
);
}
function listTasksByStatus(tasks: Task[], status: 'todo' | 'in-progress' | 'done'): Task[] {
return tasks.filter(task => task.status === status);
}
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');
const mixedTasks: Task[] = [firstTask, secondTask, thirdTask];
const todoTasks = listTasksByStatus(mixedTasks, 'todo');
const inProgressTasks = listTasksByStatus(mixedTasks, 'in-progress');
const doneTasks = listTasksByStatus(mixedTasks, 'done');
function printTaskSummary(task: Task): void {
console.log(`ID: ${task.id}, Title: ${task.title}, Status: ${task.status}`);
}
function printAllTaskSummaries(taskList: Task[]): void {
for (let task of taskList) {
printTaskSummary(task);
}
}
const sampleTasks: Task[] = [
{ id: 101, title: "Design user interface", status: 'todo' },
{ id: 102, title: "Implement authentication", status: 'in-progress' },
{ id: 103, title: "Deploy to production", status: 'done' }
];
printTaskSummary(firstTask);
printTaskSummary(sampleTasks[1]);
printAllTaskSummaries(sampleTasks);
printTaskSummary(doneTasks[doneTasks.length - 1]);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