Birleştirme
- TypeScript kursu
- Başlangıç
- Ders 85/89
- 5 dk
Tüm parçaları birleştirerek çalışan kütüphaneyi yazarsın.
Tüm parçaları birleştir
Kütüphane projesi dört ana fonksiyondan oluşur: addBook (ekle), searchByTitle (ara), borrowBook (ödünç al), returnBook (iade et). Bir oturumda önce kitap eklersin, sonra ödünç alır, en son iade edersin.
function addBook(lib: Library, book: Book): void { /* ... */ }
function searchByTitle(lib: Library, title: string): Book[] { /* ... */ }
function borrowBook(lib: Library, bookId: string): boolean { /* ... */ }
function returnBook(lib: Library, bookId: string): boolean { /* ... */ }Çalışan örnek
İki kitap ekleyip birini ödünç alalım, sonra iade edelim ve son olarak başlıkla arama yapalım. Ödünç alma ve iade, available alanını değiştirir.
const lib: Library = { books: [] };
addBook(lib, { id: "b1", title: "TypeScript", author: "Ada", available: true });
addBook(lib, { id: "b2", title: "Python", author: "Bob", available: true });
borrowBook(lib, "b1");
returnBook(lib, "b1");
const results = searchByTitle(lib, "Script");
console.log(results.length);Uygulama Çalışan kütüphaneyi yaz
Book, Member, Library arayüzlerini tanımla. addBook, searchByTitle, borrowBook, returnBook fonksiyonlarını yaz. İki kitap ekle ("TypeScript", "Python"), birini ("b1") ödünç al ve iade et, "Script" ile ara ve eşleşen sayısını yazdır.
Başlangıç kodu
// Book, Member, Library arayüzlerini tanımla
// addBook, searchByTitle, borrowBook, returnBook fonksiyonlarını yaz
// iki kitap ekle (TypeScript ve Python)
// birini ödünç al, iade et
// "Script" ile ara ve eşleşen sayısını yazdırÖrnek çözüm
interface Book { id: string; title: string; author: string; available: boolean; }
interface Member { id: string; name: string; }
interface Library { books: Book[]; }
function addBook(lib: Library, book: Book): void {
lib.books.push(book);
}
function searchByTitle(lib: Library, title: string): Book[] {
return lib.books.filter(b => b.title.includes(title));
}
function borrowBook(lib: Library, bookId: string): boolean {
const book = lib.books.find(b => b.id === bookId);
if (book && book.available) {
book.available = false;
return true;
}
return false;
}
function returnBook(lib: Library, bookId: string): boolean {
const book = lib.books.find(b => b.id === bookId);
if (book && !book.available) {
book.available = true;
return true;
}
return false;
}
const lib: Library = { books: [] };
addBook(lib, { id: "b1", title: "TypeScript", author: "Ada", available: true });
addBook(lib, { id: "b2", title: "Python", author: "Bob", available: true });
borrowBook(lib, "b1");
returnBook(lib, "b1");
const results = searchByTitle(lib, "Script");
console.log(results.length);Beklenen çıktı
1
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir kütüphane oturumunun mantıklı akışı hangisidir?
- Ekle → ödünç al → iade et Doğru cevap
- İade et → ekle → ödünç al
- Ödünç al → iade et → ekle
- Ekle → iade et → ödünç al
Açıklama: Önce kitap eklersin, sonra ödünç alırsın, en son iade edersin. Bu sıra mantıklı bir kütüphane oturumudur.
2 İade çağrısını tamamla
const result = ____(lib, "b1");
const result = returnBook(lib, "b1");
Açıklama: Kitabı iade etmek için returnBook çağrılır. borrowBook ödünç alır, addBook yeni kitap ekler, searchByTitle sadece arar.
3 Birleştirme akışı
| Kavram | Anlamı |
|---|---|
addBook |
İlk adım: ekle |
borrowBook |
İkinci adım: ödünç al |
returnBook |
Üçüncü adım: iade et |
searchByTitle |
Arama aracı |