TypeScript
Birleştirme
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.
Örnek çözümü göster
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);
Kendini test et
-
Bir kütüphane oturumunun mantıklı akışı hangisidir?
- Ekle → ödünç al → iade et
- İade et → ekle → ödünç al
- Ödünç al → iade et → ekle
- Ekle → iade et → ödünç al
Cevabı göster
Ekle → ödünç al → iade et — Önce kitap eklersin, sonra ödünç alırsın, en son iade edersin. Bu sıra mantıklı bir kütüphane oturumudur.
-
İade çağrısını tamamla
const result = ____(lib, "b1");
Cevabı göster
const result = returnBook(lib, "b1");
-
Birleştirme akışı
- addBook
- İlk adım: ekle
- borrowBook
- İkinci adım: ödünç al
- returnBook
- Üçüncü adım: iade et
- searchByTitle
- Arama aracı
Sıradaki ders: Meydan okuma 1: Türler