Null Olmama İddiası İşleci
Bir değerin null veya undefined olmadığını belirtmek için ! işlecini kullanın.
Null Olmama İddiası İşleci, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 4 dersten oluşur.
Null Olmayan Onaylama İşleci
Sonek olarak kullanılan ! işleci, TypeScript'e bu değerin burada null veya undefined olmadığını söyler. Çalışma zamanında herhangi bir denetim yapmadan bunları türden çıkarır.
function firstChar(s: string | null): string {
return s!.charAt(0); // assert s is not null
}
console.log(firstChar('hello'));`!` İşlecini Nereye Yerleştirirsiniz
! işlecini, onayladığınız ifadenin hemen arkasına ve başka bir erişimden önce yerleştirin. Bu, ifadenin türünden null | undefined değerlerini çıkarır.
type Box = { value?: number };
const box: Box = { value: 7 };
const n: number = box.value!; // value is number | undefined -> number
console.log(n);Bir Denetimden Sonra Null Olmayanı Onaylama
Bazen bir değerin mevcut olduğundan mantıksal olarak emin olursunuz, ancak derleyici bu akıl yürütmeyi izleyemez. ! işleci ilerlemenizi sağlar. Yine de gerçek bir çalışma zamanı denetimi genellikle daha açıktır.
const list: Array<string | null> = ['a', null, 'c'];
const present = list.filter((x) => x !== null);
// TS may still see string | null; assert if certain:
console.log(present[0]!.toUpperCase());Yine Yalnızca Derleme Zamanında
as gibi ! işleci de çalışma zamanında silinir. Hiçbir denetim gerçekleştirmez. Değer gerçekten null ise derleyici memnun olsa bile çalışma zamanı hatası alırsınız.
function risky(s: string | null): number {
return s!.length; // no runtime guard
}
console.log(risky('hi'));
// risky(null) would throw at runtime`!` İşlecinin Tehlikesi
Gerçekte null olabilen bir değer için null olmayan onaylaması yaparsanız gizli bir hata oluşturmuş olursunuz. Derleyici sizi uyarmayı bıraktığından hata ancak bu null değer üretimde gerçekten ortaya çıktığında görülür.
type User = { name?: string };
const u: User = {};
// const len = u.name!.length; // compiles, crashes at runtime
console.log('name is undefined here -> ! would crash');Gerçek Bir Denetimi Tercih Edin
Uygun olduğunda ! yerine gerçek bir null denetimi veya isteğe bağlı zincirleme kullanın. Güvenli sürüm tek satıra mal olur ve çalışma zamanındaki çökmelerin tamamına yol açabilecek bir hata sınıfını ortadan kaldırır.
type User = { name?: string };
function nameLen(u: User): number {
if (u.name) return u.name.length; // checked
return 0;
}
console.log(nameLen({ name: 'Ada' }), nameLen({}));Kesin Atama Onaylaması
İlişkili bir özellik de kesin atama onaylamasıdır: let x!: T. Bu, bildirimi sırasında başlatılmamış olsa bile x değişkeninin kullanılmadan önce atanacağı konusunda derleyiciye güvence verir.
let token!: string; // promise: assigned before use
function init() { token = 'abc123'; }
init();
console.log(token.length);Sınıflarda Kesin Atama
Bu, bir özelliğin oluşturucu yerine bir çerçeve veya başlatma yöntemi tarafından ayarlandığı sınıflarda yaygındır. Özellik adından sonra gelen !, kesin olarak atanmamış özelliğiyle ilgili hatayı susturur.
class Service {
config!: { url: string }; // set later by setup()
setup() { this.config = { url: '/api' }; }
}
const s = new Service();
s.setup();
console.log(s.config.url);Kesin Atamayı Dikkatli Kullanın
Kesin atama onaylaması, derleyicinin doğrulayamadığı başka bir güvencedir. Özelliğe atama yapmadan önce erişirseniz, çalışma zamanında hiçbir uyarı almadan undefined okursunuz.
class Late {
data!: number[];
read() { return this.data.length; } // crashes if called before init
}
const l = new Late();
l.data = [1, 2];
console.log(l.read());`!` ve İsteğe Bağlı Zincirleme
?. işinizi görecekken ! kullanmayın. İsteğe bağlı zincirleme null değerleri çalışma zamanında güvenli biçimde ele alırken ! yalnızca derleyiciyi susturur. Farklı sorunları çözerler.
type Cfg = { db?: { host?: string } };
const c: Cfg = {};
console.log(c.db?.host ?? 'localhost'); // safe
// c.db!.host! would crash here`!` Ne Zaman Gerekçelendirilebilir
! işleci, derleyicinin ifade edemediği gerçek bir güvenceniz olduğunda makuldür; örneğin az önce push edip hemen read ettiğiniz bir değer için. Buna rağmen neden güvenli olduğunu belgeleyin.
const cache = new Map<string, number>();
cache.set('hits', 0);
// We just set it, so get is non-null:
const hits = cache.get('hits')!;
console.log(hits);Hızlı Denetim
Null olmayan onaylama işlecini anlayıp anlamadığınızı sınayın.
Tekrar: Null Olmayan Onaylama
Şunları öğrendiniz:
- Son ek
!, derleme zamanında yalnızca bir türdennull | undefineddeğerlerini kaldırır. - Çalışma zamanı denetimi yapmaz; bu nedenle yanlış bir tür iddiası yine çökmeye yol açar.
let x!: T, daha sonra başlatılan değerler için kesin atama tür iddiasıdır.- Gerçek denetimleri veya isteğe bağlı zincirlemeyi tercih edin;
!işlecini gerçek güvenceler için saklayın.
Sırada çift tür iddiaları ve bunların riskleri var.
const map = new Map<string, number>();
map.set('a', 1);
const v = map.get('a')!;
console.log(v);Sıkça Sorulan Sorular
“Null Olmama İddiası İşleci” dersi ücretsiz mi?
Evet — “Null Olmama İddiası İşleci” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 4 dersten oluşur.
“Null Olmama İddiası İşleci” dersinde ne öğreneceğim?
Bir değerin null veya undefined olmadığını belirtmek için ! işlecini kullanın. TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Null Olmama İddiası İşleci” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Tür İddiaları için as Anahtar Sözcüğü
- Null Olmama İddiası İşleci
- Çift İddialar ve Riskleri
- İddialar ve Tür Koruyucuları