একটি বিভক্ত (ট্যাগ করা) ইউনিয়ন হল অবজেক্ট টাইপের একটি ইউনিয়ন যা সবগুলি একটি সাধারণ লিটারাল ফিল্ড শেয়ার করে — বিভেদক — যা কম্পাইলার বৈকল্পগুলি আলাদা করতে এবং নিরাপদে সংকীর্ণ করতে ব্যবহার করে।
=
| { : }
| { : ; : }
| { : ; : };
একটি বিভক্ত (ট্যাগ করা) ইউনিয়ন হল অবজেক্ট টাইপের একটি ইউনিয়ন যা সবগুলি একটি সাধারণ লিটারাল ফিল্ড শেয়ার করে — বিভেদক — যা কম্পাইলার বৈকল্পগুলি আলাদা করতে এবং নিরাপদে সংকীর্ণ করতে ব্যবহার করে।
=
| { : }
| { : ; : }
| { : ; : };
প্রতিটি সদস্যের একটি status লিটারাল রয়েছে। এটি পরীক্ষা করা ঠিক একটি বৈকল্পে সংকীর্ণ করে, সেই বৈকল্পের ফিল্ডগুলি আনলক করে:
function render(r: Result) {
switch (r.status) {
case "loading": return "...";
case "success": return r.data; // ✅ data exists only here
case "error": return r.message; // ✅ message exists only here
}
}
যদি আপনি loading কেসে r.data অ্যাক্সেস করার চেষ্টা করেন তবে এটি একটি কম্পাইল ত্রুটি — টাইপ সিস্টেম অবৈধ সমন্বয় প্রতিনিধিত্বযোগ্য অসম্ভব করে তোলে।
function render2(r: Result): string {
switch (r.status) {
case "loading": return "...";
case "success": return r.data;
case "error": return r.message;
default:
const _exhaustive: never = r; // ✅ if you add a variant and forget a case, this errors
return _exhaustive;
}
}
never অ্যাসাইনমেন্ট আপনাকে প্রতিটি কেস পরিচালনা করতে বাধ্য করে — একটি নতুন স্ট্যাটাস যোগ করুন এবং কম্পাইলার আপনাকে প্রতিটি সুইচ দেখাবে যার আপডেট প্রয়োজন।
বিভক্ত ইউনিয়নগুলি অবস্থা (loading/success/error), ইভেন্ট/অ্যাকশন (Redux reducers), এবং যেকোনো "বেশ কয়েকটি আকারের একটি" ডেটা মডেলিংয়ের পরিভাষাসংক্রান্ত উপায়।
তারা অবৈধ অবস্থাগুলি অসম্ভব করে তোলে এবং never কৌশলের সাথে, আপনাকে কম্পাইল-টাইম সম্পূর্ণতা প্রদান করে — ঢিলেঢালা boolean/ঐচ্ছিক-ফিল্ড মডেলিংয়ের উপর একটি বিশাল নিরাপত্তা লাভ।
বিস্তারিত উত্তরসহ IT ইন্টারভিউ প্রশ্নের একটি লাইব্রেরি — জুনিয়র থেকে সিনিয়র পর্যন্ত।
দান করুন