Nullable Türler ('strictNull')
Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası — ders 71 / 73.
Varsayılan olarak TypeScript, null ve undefined'ın herhangi bir türe atanmasına izin verir; bu da çalışma zamanı hatalarına yol açabilir. strictNullChecks derleyici seçeneği, null ve undefined'ı kendi başlarına ayrı türler haline getirerek bu davranışı değiştirir.
strictNullChecks etkinleştirildiğinde, bu değerlere izin vermek istiyorsanız tür açıklamalarınıza açıkça null veya undefined eklemelisiniz:
// strictNullChecks olmadan - buna izin verilirdi
let name: string = null; // strictNullChecks ile hata!
// strictNullChecks ile - açık olmalısınız
let name: string | null = null; // Şimdi bu çalışıyorBu, potansiyel null değerleri kullanmadan önce işlemenizi zorunlu kılar. Önce kontrol etmeden, null olabilecek bir değer üzerinde metot çağıramaz veya özelliklere erişemezsiniz:
function processName(name: string | null) {
// Bu bir hataya neden olur
// console.log(name.toUpperCase());
// Önce kontrol etmelisiniz
if (name !== null) {
console.log(name.toUpperCase()); // Kullanımı güvenli
}
}Bu derleyici seçeneği, yaygın "Cannot read property of null" çalışma zamanı hatalarını derleme zamanında yakalayarak önlemeye yardımcı olur ve kodunuzu daha güvenilir ve öngörülebilir hale getirir.
Görev
Kolaynull değerler içerebilecek kullanıcı profili verilerini güvenli bir şekilde işleyen bir fonksiyon oluşturun. Bu meydan okuma, strictNullChecks özelliğinin sizi null olabilir (nullable) türleri açıkça işlemeye nasıl zorladığını gösterir.
Aşağıdaki özelliklere sahip getUserDisplayName adında bir fonksiyon oluşturun:
string | nulltüründe birfullNameparametresi alır- Eğer
nulldeğilse tam adı döndürür - Eğer tam ad
nullise"Anonymous User"döndürür - Açık bir
stringdönüş türüne sahiptir
Aşağıdaki özelliklere sahip formatUserEmail adında ikinci bir fonksiyon oluşturun:
string | nulltüründe biremailparametresi alır- Eğer
nulldeğilse e-postayı küçük harflerle döndürür - Eğer e-posta
nullise"No email provided"döndürür - Açık bir
stringdönüş türüne sahiptir
Aşağıdaki özelliklere sahip getUserInfo adında üçüncü bir fonksiyon oluşturun:
string | nulltüründenamevestring | nulltüründeemailolmak üzere iki parametre alır- Parametreleri işlemek için önceki her iki fonksiyonu da kullanır
- Şu formatta bir dize döndürür:
"Name: [processed name], Email: [processed email]" - Açık bir
stringdönüş türüne sahiptir
Fonksiyonlarınızı aşağıdaki verilerle test edin:
getUserDisplayName("John Smith")fonksiyonunu çağırın ve sonucu yazdırıngetUserDisplayName(null)fonksiyonunu çağırın ve sonucu yazdırınformatUserEmail("ALICE@EXAMPLE.COM")fonksiyonunu çağırın ve sonucu yazdırınformatUserEmail(null)fonksiyonunu çağırın ve sonucu yazdırıngetUserInfo("Bob Johnson", "bob@test.com")fonksiyonunu çağırın ve sonucu yazdırıngetUserInfo(null, null)fonksiyonunu çağırın ve sonucu yazdırıngetUserInfo("Sarah Wilson", null)fonksiyonunu çağırın ve sonucu yazdırın
Kendin dene
// YAPILACAK: Kodunuzu buraya yazın
// fullName (string | null) alan ve string döndüren getUserDisplayName fonksiyonunu oluşturun
// email (string | null) alan ve string döndüren formatUserEmail fonksiyonunu oluşturun
// name ve email (her ikisi de string | null) alan ve string döndüren getUserInfo fonksiyonunu oluşturun
// Fonksiyonları test edin ve sonuçları yazdırın
console.log(getUserDisplayName("John Smith"));
console.log(getUserDisplayName(null));
console.log(formatUserEmail("ALICE@EXAMPLE.COM"));
console.log(formatUserEmail(null));
console.log(getUserInfo("Bob Johnson", "bob@test.com"));
console.log(getUserInfo(null, null));
console.log(getUserInfo("Sarah Wilson", null));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ı8Enumlar
Sayısal Enum Nedir?Sayısal Enum KullanımıString Enum Nedir?String Enum KullanımıHeterojen EnumlarÖzet: Enum Kullanımı11İleri Düzey Konular
Tür AtamalarıTür Korumaları: in & instanceof'never' TürüNullable Türler ('strictNull')Nesneler için İndeks İmzalarıÖzet: Türlerde İnce Ayar Yapma3Veri 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