Menu
Coddy logo textTech

Özet: Gelişmiş Tip Kombinasyonları

Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası — ders 36 / 73.

challenge icon

Görev

Kolay

status özelliği "success" literal türünde ve data özelliği any türünde olan bir nesne için Success adında bir tür takma adı (type alias) oluşturun.

status özelliği "error" literal türünde ve message özelliği string türünde olan bir nesne için Failure adında bir tür takma adı oluşturun.

Success ve Failure türlerinin birleşimi (union) olan Result adında bir tür takma adı oluşturun.

Result türünde result adında bir parametre alan ve string döndüren processResult adında bir fonksiyon oluşturun. Fonksiyon, sonuç türünü belirlemek için status özelliği üzerinde bir tür koruması (type guard) kullanmalı ve şu şekilde davranmalıdır:

  • Eğer durum "success" ise, "Operation successful: [data]" döndürün
  • Eğer durum "error" ise, "Operation failed: [message]" döndürün

Result türünde response adında bir parametre alan ve boolean döndüren handleApiResponse adında başka bir fonksiyon oluşturun. Fonksiyon, işlem başarılıysa true, başarısızsa false döndürmelidir.

Aşağıdaki girdiler sağlanacaktır:

  • Birinci girdi: {"status": "success", "data": "User created"} gibi bir başarı sonucunu veya {"status": "error", "message": "Invalid credentials"} gibi bir hata sonucunu temsil eden bir JSON dizesi
  • İkinci girdi: aynı formatta başka bir JSON dizesi

Her iki JSON girdisini de Result nesneleri olarak ayrıştırın, ardından:

  • İlk ayrıştırılan sonuçla processResult fonksiyonunu çağırın ve döndürülen dizeyi yazdırın
  • İlk ayrıştırılan sonuçla handleApiResponse fonksiyonunu çağırın ve döndürülen boolean değeri yazdırın
  • İkinci ayrıştırılan sonuçla processResult fonksiyonunu çağırın ve döndürülen dizeyi yazdırın
  • İkinci ayrıştırılan sonuçla handleApiResponse fonksiyonunu çağırın ve döndürülen boolean değeri yazdırın

Kendin dene

import * as readline from 'readline';

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

const input: string[] = [];

// YAPILACAK: Kodunuzu buraya yazın
// 1. Success, Failure ve Result için tür takma adları oluşturun

// 2. processResult fonksiyonunu oluşturun

// 3. handleApiResponse fonksiyonunu oluşturun

rl.on('line', (line: string) => {
    input.push(line.trim());
    if (input.length === 2) {
        // JSON girdilerini ayrıştırın
        const result1 = JSON.parse(input[0]);
        const result2 = JSON.parse(input[1]);
        
        // 4. Fonksiyonları ayrıştırılmış sonuçlarla çağırın ve çıktıları yazdırın
        
        
        rl.close();
    }
});

TypeScript'e Giriş bölümündeki tüm dersler