CodeBlanks Logo Icon CodeBlanks

Meydan okuma 4: Mini uygulama

Başlangıç seviyesinin tamamını yoklayan bir görev çözersin.

Meydan okuma 4: Mini uygulama

Bu meydan okuma başlangıç seviyesinin tamamını yoklar. Türler, fonksiyonlar, union ve intersection'ı birleştirerek bir mini görev uygulaması yazacaksın. Önce Task modeli ve fonksiyonları, sonra PrioritizedTask türünü tanımlayacaksın.

Uygulama Task modeli ve fonksiyonlar

Task arayüzünü tanımla: id: string, title: string, done: boolean. addTask(tasks: Task[], title: string): void fonksiyonu yaz (id = String(tasks.length + 1), done = false). completeTask(tasks: Task[], id: string): void fonksiyonu yaz (bul ve done = true yap). Bir görev ekle, tamamla ve done değerini yazdır.

Başlangıç kodu

index.ts
// Task arayüzü: id, title, done
// addTask(tasks: Task[], title: string): void yaz
// completeTask(tasks: Task[], id: string): void yaz
// id'ye göre bul, done true yap
// bir görev ekle, tamamla ve done yazdır

Örnek çözüm

index.ts
interface Task { id: string; title: string; done: boolean; }

function addTask(tasks: Task[], title: string): void {
  tasks.push({ id: String(tasks.length + 1), title, done: false });
}

function completeTask(tasks: Task[], id: string): void {
  const task = tasks.find(t => t.id === id);
  if (task) {
    task.done = true;
  }
}

const tasks: Task[] = [];
addTask(tasks, "Süt al");
completeTask(tasks, "1");
console.log(tasks[0].done);

Beklenen çıktı

true

Uygulama PrioritizedTask birleştir

Priority türünü "low" | "high" olarak tanımla. Task arayüzünü tanımla: id: string, title: string, done: boolean. PrioritizedTask türünü Task & { priority: Priority } olarak tanımla. Bir nesne oluştur ve priority alanını yazdır.

Başlangıç kodu

index.ts
// Priority türü: "low" veya "high"
// Task arayüzü tanımla (id, title, done)
// PrioritizedTask = Task & { priority: Priority }
// bir nesne oluştur ve priority yazdır

Örnek çözüm

index.ts
type Priority = "low" | "high";

interface Task { id: string; title: string; done: boolean; }

type PrioritizedTask = Task & { priority: Priority };

const pt: PrioritizedTask = {
  id: "1",
  title: "Süt al",
  done: false,
  priority: "high"
};
console.log(pt.priority);

Beklenen çıktı

high

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir mini uygulamada önce ne yapılır?

  • Önce çıktı yaz
  • Hemen console.log yap
  • Türleri ve arayüzleri tanımla Doğru cevap
  • Önce fonksiyonları çağır

Açıklama: Sağlam bir uygulama önce türleri tanımlar; sonra fonksiyonlar bu türler üzerinde çalışır. Çıktı yazma en son adımdır.

2 done alan türünü tamamla

Soru
interface Task { id: string; title: string; done: ____; }
Cevap
interface Task { id: string; title: string; done: boolean; }

Açıklama: done, bir görevin tamamlanıp tamamlanmadığını belirten mantıksal alandır; bu yüzden boolean. string ve number yanlış tür, "yes" | "no" gereksiz karmaşıklık.

3 Task model parçaları

Kavram Anlamı
interface Task Görev modeli
id: string Kimlik alanı
done: boolean Tamamlanma durumu
title: string Başlık alanı

Başlangıç bölümündeki tüm dersler