Postfix ! கம்பைலருக்கு "இந்த மதிப்பு இங்கே null அல்ல அல்லது undefined அல்ல என்று நான் உறுதியளிக்கிறேன்" என்று சொல்கிறது — null/undefined ஐ அதன் வகையிலிருந்து நீக்குகிறது இயக்க நேர சரிபார்ப்பு இல்லாமல்.
() {
.(name!.());
}
Postfix ! கம்பைலருக்கு "இந்த மதிப்பு இங்கே null அல்ல அல்லது undefined அல்ல என்று நான் உறுதியளிக்கிறேன்" என்று சொல்கிறது — null/undefined ஐ அதன் வகையிலிருந்து நீக்குகிறது இயக்க நேர சரிபார்ப்பு இல்லாமல்.
() {
.(name!.());
}
இது முற்றிலும் compile-time assertion ஆகும் — as போல், இது எந்த runtime verification ஐ செய்யாது. நீங்கள் தவறாக இருந்தால், இது சரிந்துவிடும்:
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
இவற்றின் ஒவ்வொன்றும் அதை எதிர்ப்பு செய்வதற்கு பதிலாக விடுபட்ட வழக்கை கையாளுகிறது.
! ஒரு கூர்மையான கருவி: இது compiler உங்களுக்கு கொடுக்க முயற்சிக்கும் null-safety ஐ அமைதிப்படுத்துகிறது.
இது எப்போதாவது நியாயம்தான் (உங்களிடம் compiler இல்லாத அறிவு உள்ளது), ஆனால் அதை அதிகமாக பயன்படுத்துவது strictNullChecks தடுக்கும் சரியான null-crash bugs ஐ மீண்டும் அறிமுகப்படுத்துகிறது।
முதலில் ?., ??, அல்லது explicit guard க்கு பகுதியை அணுகவும்; ! ஐ பயன்படுத்தவும் non-nullness ஐ மிகவும் நிரூபிக்க முடியும் போது மட்டுமே.