Generic Fonksiyon Kullanımı
Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası — ders 59 / 73.
Generic bir fonksiyonu kullanmanın iki yolu vardır: açık tip argümanlarıyla veya TypeScript'in tipi otomatik olarak çıkarmasına izin vererek.
İşte açık tür argümanlarıyla genel bir fonksiyonu şu şekilde çağırabilirsiniz:
const result1 = wrapInObject("hello");
const result2 = wrapInObject(42);<string> ve <number>, TypeScript'e T için hangi türün kullanılacağını açıkça söyler. Bu, size tür parametresi üzerinde tam kontrol sağlar.
Ancak TypeScript, çoğu durumda ilettiğiniz bağımsız değişkenden türü çıkaracak kadar akıllıdır:
const result1 = wrapInObject("hello"); // T, string olarak çıkarıldı
const result2 = wrapInObject(42); // T, number olarak çıkarıldıTür çıkarımı, aynı tür güvenliğini korurken kodunuzu daha temiz ve daha okunabilir hale getirir. TypeScript argümanı analiz eder ve T'nin ne olması gerektiğini otomatik olarak belirler, bu nedenle çıkarılan türü geçersiz kılmak istemediğiniz sürece açık bir tür belirteci yazmanıza gerek kalmaz.
Görev
KolayÖnceki meydan okumadan size aşağıdakiler sağlanmıştır:
Ttipinde bir öğe alan ve{ value: T }döndüren genel (generic)wrapInObject<T>fonksiyonu.
wrapInObject fonksiyonunu hem açık tip argümanları (explicit type arguments) hem de tip çıkarımı (type inference) kullanarak çağırın:
Açık tip argümanlarını kullanarak:
wrapInObject<string>fonksiyonunu"TypeScript"ile çağırarak birexplicitStringdeğişkeni oluşturun.wrapInObject<number>fonksiyonunu25ile çağırarak birexplicitNumberdeğişkeni oluşturun.wrapInObject<boolean>fonksiyonunufalseile çağırarak birexplicitBooleandeğişkeni oluşturun.
Tip çıkarımını kullanarak:
wrapInObjectfonksiyonunu"Generics"ile çağırarak birinferredStringdeğişkeni oluşturun (TypeScript'in tipi çıkarmasına izin verin).wrapInObjectfonksiyonunu99ile çağırarak birinferredNumberdeğişkeni oluşturun (TypeScript'in tipi çıkarmasına izin verin).wrapInObjectfonksiyonunutrueile çağırarak birinferredBooleandeğişkeni oluşturun (TypeScript'in tipi çıkarmasına izin verin).
Aşağıdaki çıktıları yazdırın:
explicitString.valuedeğerini yazdırınexplicitNumber.valuedeğerini yazdırınexplicitBoolean.valuedeğerini yazdırıninferredString.valuedeğerini yazdırıninferredNumber.valuedeğerini yazdırıninferredBoolean.valuedeğerini yazdırın
Kendin dene
// Önceki görevden alınan genel (generic) fonksiyon
function wrapInObject<T>(item: T): { value: T } {
return { value: item };
}
// TODO: Kodunuzu buraya yazın
// Açık tip argümanları kullanarak değişkenler oluşturun
// Tip çıkarımı (type inference) kullanarak değişkenler oluşturun
// Sonuçları yazdırınBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
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ımlama9Generic Yapılar: İlk Bakış
Generic Yapıların Çözdüğü SorunGeneric Identity Fonksiyonu OluşturmaGeneric Fonksiyon KullanımıGeneric DizilerGeneric Interface'lerÖzet: Generic Fonksiyon Pratiği