Özet: Gelişmiş Tip Kombinasyonları
Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası — ders 36 / 73.
Görev
Kolaystatus ö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
processResultfonksiyonunu çağırın ve döndürülen dizeyi yazdırın - İlk ayrıştırılan sonuçla
handleApiResponsefonksiyonunu çağırın ve döndürülen boolean değeri yazdırın - İkinci ayrıştırılan sonuçla
processResultfonksiyonunu çağırın ve döndürülen dizeyi yazdırın - İkinci ayrıştırılan sonuçla
handleApiResponsefonksiyonunu ç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
1TS ile Başlarken
TypeScript Nedir?Neden TypeScript Kullanılır?İlk TypeScript KodunuzDerleme Süreci ve HatalarÖzet: TS'ye Giriş4Fonksiyonlarla Çalışmak
Parametre ve Dönüş Değerlerini TiplendirmeArrow Fonksiyonlarını Tiplendirme'void' Dönüş Tipi'?' ile Opsiyonel ParametrelerVarsayılan Parametre DeğerleriRest Parametrelerini TiplendirmeFonksiyon Tiplerini TanımlamaÖzet: Tiplendirilmiş Fonksiyonlar Oluşturma2Temel Tipler
Temel Tipler: str, num, boolean'any' Tipi: Kaçış Yolu'unknown' Tipi'null' ve 'undef' ile ÇalışmakTip Çıkarımı İş BaşındaAçık Tip BelirlemeleriÖzet: Temel Tipler Pratiği5Tipler: Takma Adlar, Unionlar ve Kesişimler
İlkel Tipler için Tip Takma AdlarıUnion Tipler ('|')Union Tipler ile ÇalışmakLiteral TiplerKesişim Tipleri ('&')Tip Takma Adlarını BirleştirmeÖzet: Gelişmiş Tip Kombinasyonları3Veri Yapısı: Diziler ve Tuple
Tipli DizilerDiziler için 'readonly' BelirleyicisiTuple Nedir?Tuple Tanımlama ve ErişmeTuple DestructuringReadonly Tuple'larÇok Boyutlu Tipli DizilerDizilerle Spread OperatörüÖzet: Diziler ve Tuple'lar6Nesneleri ve Interface'leri Tiplendirme
Satır İçi Nesne Tipi BelirtimleriNesneler için Type Alias KullanımıInterface'lere GirişInterface'ler ve Type Alias'ların KarşılaştırılmasıOpsiyonel ve Readonly ÖzelliklerInterface ve Tipleri GenişletmeInterface'lere Metot EklemeÖzet: Nesne Yapılarını Tanımlama