'never' Türü
Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası — ders 70 / 73.
never türü, asla gerçekleşmeyen değerleri temsil eder. Bu ilk başta kafa karıştırıcı gelebilir, ancak kodunuzdaki belirli senaryoları düşündüğünüzde aslında oldukça mantıklıdır.
never türü, en yaygın olarak normal şekilde asla geri dönmeyen fonksiyonlar için kullanılır.
Bu, her zaman bir hata fırlatan veya sonsuz döngüler içeren fonksiyonları içerir:
function throwError(message: string): never {
throw new Error(message);
}
function infiniteLoop(): never {
while (true) {
// Bu döngü asla bitmez
}
}Bir fonksiyonun anlamlı bir değer döndürmediğini belirten void türünün aksine, never fonksiyonun bitiş noktasına hiçbir zaman ulaşmadığını belirtir. Çalışma, ya bir hata fırlatılması nedeniyle durur ya da süresiz olarak devam eder.
Görev
KolayHer zaman bir hata fırlatarak ve asla normal bir şekilde geri dönmeyerek never dönüş türünü gösteren throwError adında bir fonksiyon oluşturun.
Fonksiyon şunları yapmalıdır:
stringtüründe birmessageparametresi almalı- Sağlanan mesajla yeni bir
Errorfırlatmalı - Açık bir
neverdönüş türüne sahip olmalı
Şunları yapan handleOperation adında ikinci bir fonksiyon oluşturun:
- İki parametre alır:
stringtüründeoperationvenumbertüründevalue - Eğer operation
"double"isevalue * 2döndürür - Eğer operation
"half"isevalue / 2döndürür - Diğer tüm operasyonlar için
"Invalid operation: [operation]"mesajıylathrowErrorfonksiyonunu çağırır - Açık bir
numberdönüş türüne sahip olmalı
Fonksiyonlarınızı aşağıdaki operasyonlarla test edin:
handleOperation("double", 5)fonksiyonunu çağırın ve sonucu yazdırınhandleOperation("half", 8)fonksiyonunu çağırın ve sonucu yazdırınhandleOperation("triple", 3)fonksiyonunu çağırın ve sonucu yazdırın (bu bir hata fırlatacaktır)
Ek test durumları oluşturun:
handleOperation("double", 15)fonksiyonunu çağırın ve sonucu yazdırınhandleOperation("half", 20)fonksiyonunu çağırın ve sonucu yazdırın
Kendin dene
// TODO: Kodunuzu buraya yazın
// Geri dönüş tipi never olan throwError fonksiyonunu oluşturun
// Geri dönüş tipi number olan handleOperation fonksiyonunu oluşturun
// Fonksiyonları try-catch blokları ile test edin
try {
console.log(handleOperation("double", 5));
} catch (error) {
console.log(`Error: ${(error as Error).message}`);
}
try {
console.log(handleOperation("half", 8));
} catch (error) {
console.log(`Error: ${(error as Error).message}`);
}
try {
console.log(handleOperation("triple", 3));
} catch (error) {
console.log(`Error: ${(error as Error).message}`);
}
try {
console.log(handleOperation("double", 15));
} catch (error) {
console.log(`Error: ${(error as Error).message}`);
}
try {
console.log(handleOperation("half", 20));
} catch (error) {
console.log(`Error: ${(error as Error).message}`);
}Bu 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ımlama