Postfix ! derleyiciye "Bu değerin burada null veya undefined olmadığını garantiyorum" der — null/undefined'ı hiçbir runtime kontrolü olmadan türünden kaldırır.
ts
() {
.(name!.());
}
Postfix ! derleyiciye "Bu değerin burada null veya undefined olmadığını garantiyorum" der — null/undefined'ı hiçbir runtime kontrolü olmadan türünden kaldırır.
() {
.(name!.());
}
Bu tamamen compile-time assertion'dır — as gibi, hiçbir runtime doğrulaması yapmaz. Yanılıyorsanız, çöker:
const el = document.getElementById("app")!; // assert non-null
el.innerHTML = "hi"; // 💥 runtime error if #app doesn't actually exist
// 1. You've logically guaranteed it, but the compiler can't see it
if (map.has(key)) map.get(key)!.doThing(); // has() proves get() isn't undefined
// 2. Class fields initialized outside the constructor (DI, lifecycle hooks)
class C { value!: string; } // definite assignment assertion
name?.toUpperCase(); // optional chaining — no crash, yields undefined
const x = name ?? "default"; // provide a fallback
if (name) name.toUpperCase(); // narrow with a real check
Bunların her biri eksik durumu iddia etmek yerine işler.
! keskin bir araçtır: derleyicinin size vermeye çalıştığı null-safety'yi susturur.
Bazı durumlarda haklıdır (derleyicinin bilmediği bilginiz vardır), ancak aşırı kullanım strictNullChecks'in önlediği tam null-crash hatalarını yeniden tanıtır.
Önce ?., ?? veya açık bir guard'a ulaşın; !'ı yalnızca non-nullness'ı gerçekten kanıtlayabileceğiniz zaman kullanın.