Postfix ! inasema kwa compiler "Ninahakikisha kwamba thamani hii sio null au undefined hapa" — inaondoa null/undefined kutoka kwa aina yake bila ujezi wowote wa runtime.
ts
() {
.(name!.());
}
Postfix ! inasema kwa compiler "Ninahakikisha kwamba thamani hii sio null au undefined hapa" — inaondoa null/undefined kutoka kwa aina yake bila ujezi wowote wa runtime.
() {
.(name!.());
}
Ni kakamataka kwa compile-time tu — kama as, haifanyi hakuna uthibitisho wa runtime. Ikiwa wewe ni makosa, inaanguka:
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
Kila moja ya hizi inashughulikia kesi inayokosekana badala ya kushipikia.
! ni chombo kali: inastisha null-usalama ambao compiler inajaribu kukupatia.
Ni busara wakati mwingine (una ujuzi ambao compiler haunacho), lakini kutumia kupita kiasi kunaanza tena haswa null-crash bugs strictNullChecks inazuia.
Fika kwa ?., ??, au wazi kutekeleza kwanza; tumia ! tu wakati unaweza kweli kuthibiti non-nullness.