পোস্টফিক্স ! কম্পাইলারকে বলে "আমি গ্যারান্টি দিচ্ছি যে এই মানটি এখানে null বা undefined নয়" — কোনো রানটাইম চেক ছাড়াই তার ধরন থেকে null/undefined সরিয়ে দেয়।
ts
() {
.(name!.());
}
পোস্টফিক্স ! কম্পাইলারকে বলে "আমি গ্যারান্টি দিচ্ছি যে এই মানটি এখানে null বা undefined নয়" — কোনো রানটাইম চেক ছাড়াই তার ধরন থেকে null/undefined সরিয়ে দেয়।
() {
.(name!.());
}
এটি সম্পূর্ণভাবে কম্পাইল-টাইম অ্যাসার্শন — as এর মতো, এটি কোনো রানটাইম যাচাইকরণ করে না। যদি আপনি ভুল হন, তবে এটি ক্র্যাশ হয়:
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
এই প্রতিটিটি অনুপলব্ধ কেসটি পরিচালনা করে এটিকে অ্যাসার্ট করার পরিবর্তে।
! একটি তীক্ষ্ণ সরঞ্জাম: এটি null-সুরক্ষা চুপ করে যা কম্পাইলার আপনাকে দিতে চায়।
এটি মাঝে মাঝে ন্যায্য (আপনার কাছে কম্পাইলারের অভাব থাকা জ্ঞান রয়েছে), কিন্তু এটি অত্যধিক ব্যবহার করলে ঠিক সেই null-crash বাগ পুনরায় চালু হয় যা strictNullChecks প্রতিরোধ করে।
প্রথমে ?., ??, বা একটি স্পষ্ট গার্ডের জন্য যান; শুধুমাত্র তখনই ! ব্যবহার করুন যখন আপনি সত্যিই অ-নাল্লনেস প্রমাণ করতে পারেন।