এই সম্পত্তি পরিবর্তকগুলি নিয়ন্ত্রণ করে যে একটি সম্পত্তি প্রয়োজনীয় কিনা এবং এটি পুনঃনির্ধারণ করা যায় কিনা।
ঐচ্ছিক (?)
ts
{
: ;
?: ;
}
: = { : };
: = { : , : };
() {
u..;
u.?.;
}
এই সম্পত্তি পরিবর্তকগুলি নিয়ন্ত্রণ করে যে একটি সম্পত্তি প্রয়োজনীয় কিনা এবং এটি পুনঃনির্ধারণ করা যায় কিনা।
?) {
: ;
?: ;
}
: = { : };
: = { : , : };
() {
u..;
u.?.;
}
একটি ঐচ্ছিক সম্পত্তির ধরন T | undefined, তাই কম্পাইলার আপনাকে অনুপস্থিত কেস পরিচালনা করতে বাধ্য করে — "cannot read property of undefined" বাগ প্রতিরোধ করে।
interface Point { readonly x: number; readonly y: number; }
const p: Point = { x: 1, y: 2 };
p.x = 5; // ❌ Error: cannot assign to readonly property
// arrays too
const nums: readonly number[] = [1, 2, 3];
nums.push(4); // ❌ push doesn't exist on readonly array
readonly শুধুমাত্র কম্পাইল-টাইম (কোন রানটাইম প্রয়োগ নেই), কিন্তু এটি প্রকার সিস্টেমে অপরিবর্তনীয়তা নথিভুক্ত এবং প্রয়োগ করে, আকস্মিক পরিবর্তন ধরে ফেলে।
interface Config { readonly id: string; tags?: readonly string[]; }
type Frozen = Readonly<User>; // utility type makes ALL props readonly
? প্রকৃত ঐচ্ছিক ডেটা মডেল করে এবং null-নিরাপত্তা বাধ্য করে; readonly অপরিবর্তনীয়তা প্রকাশ এবং প্রয়োগ করে (কনফিগ, প্রপস এবং আকস্মিক স্টেট মিউটেশন প্রতিরোধের জন্য চমৎকার)।
উভয়ই কম্পাইলারে সঠিকতা পরীক্ষা করা চালায়।