Birleştirme
- TypeScript kursu
- Orta seviye
- Ders 80/89
- 5 dk
Tüm parçaları birleştirerek çalışan quiz'i yazarsın.
Özet - Quiz uygulaması
Bu projede bir quiz uygulamasının tüm parçalarını birleştirdin: Soru modeli, soru havuzu, cevap kontrolü ve skor hesaplama. Her parça kendi sorumluluğunu taşır ve birlikte çalışan bir uygulama oluşturur. Model veriyi, havuz kaynağı, kontrol mantığı, skor sonucu temsil eder.
interface Soru { metin: string; dogruIndex: number; }
function cevapKontrol(d: number, c: number): boolean {
return d === c;
}Final montaj
Son montajda tüm parçalar tek bir akışta birleşir: soru havuzu alınır, her soru için cevap kontrolü yapılır, sonuçlar boolean[] dizisinde toplanır ve skorHesapla ile toplam bulunur. map metodu her soruyu bir boolean sonuç haline getirir.
const sonuclar = sorular.map(
(s, i) => cevapKontrol(s.dogruIndex, cevaplar[i])
);Uygulama Çalışan quiz
Soru interface'i tanımla: metin: string, dogruIndex: number. cevapKontrol fonksiyonu (dogruIndex: number, cevap: number): boolean olsun ve dogruIndex === cevap dönsün. skorHesapla fonksiyonu (sonuclar: boolean[]): number olsun, for...of ile true'ları saysın. sorular dizisi iki Soru içersin: { metin: "a", dogruIndex: 0 } ve { metin: "b", dogruIndex: 1 }. cevaplar dizisi [0, 0] olsun. sorular.map ile her soru için cevapKontrol çağırıp sonuclar dizisini oluştur ve skorHesapla(sonuclar) sonucunu console.log ile yazdır.
Başlangıç kodu
// Soru interface tanımla
// cevapKontrol ve skorHesapla fonksiyonları yaz
// sorular ve cevaplar dizileri oluştur
// map ile sonuçları topla, skoru yazdırÖrnek çözüm
interface Soru {
metin: string;
dogruIndex: number;
}
function cevapKontrol(dogruIndex: number, cevap: number): boolean {
return dogruIndex === cevap;
}
function skorHesapla(sonuclar: boolean[]): number {
let skor = 0;
for (const s of sonuclar) {
if (s) skor++;
}
return skor;
}
const sorular: Soru[] = [
{ metin: "a", dogruIndex: 0 },
{ metin: "b", dogruIndex: 1 }
];
const cevaplar: number[] = [0, 0];
const sonuclar = sorular.map((s, i) => cevapKontrol(s.dogruIndex, cevaplar[i]));
console.log(skorHesapla(sonuclar));Beklenen çıktı
1
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Quiz uygulamasında birleştirme sırası aşağıdakilerden hangisidir?
- Skor, kontrol, havuz, model
- Model, kontrol, havuz, skor Doğru cevap
- Havuz, model, skor, kontrol
- Kontrol, skor, model, havuz
Açıklama: Doğru sıra: önce model tanımlanır, sonra cevap kontrolü yazılır, soru havuzu eklenir ve en son skor hesaplanır.
2 map ile indeks erişimi
const sonuclar = sorular.map((s, i) => cevapKontrol(s.dogruIndex, cevaplar[____]));
const sonuclar = sorular.map((s, i) => cevapKontrol(s.dogruIndex, cevaplar[i]));
Açıklama: map callback'inde i parametresi sıradaki indeksi verir; cevaplar dizisinden o indeksli cevabı almak için i kullanılır.
3 Birleştirme parçaları
| Kavram | Anlamı |
|---|---|
Soru interface |
Veri modeli |
sorular dizisi |
Soru havuzu |
cevapKontrol |
Doğrulama fonksiyonu |
skorHesapla |
Skor hesabı |