ये संपत्ति संशोधक नियंत्रित करते हैं कि क्या संपत्ति आवश्यक है और क्या इसे पुनः असाइन किया जा सकता है।
Optional (?)
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 केवल compile-time पर है (कोई runtime प्रवर्तन नहीं), लेकिन यह प्रकार प्रणाली में अपरिवर्तनीयता को दस्तावेज़ करता है और लागू करता है, आकस्मिक उत्परिवर्तन को पकड़ता है।
interface Config { readonly id: string; tags?: readonly string[]; }
type Frozen = Readonly<User>; // utility type makes ALL props readonly
? वास्तविक वैकल्पिक डेटा को मॉडल करता है और null-सुरक्षा को बाध्य करता है; readonly अपरिवर्तनीयता को व्यक्त करता है और लागू करता है (कॉन्फ़िग, props, और आकस्मिक स्थिति उत्परिवर्तन को रोकने के लिए बहुत अच्छा)।
दोनों कंपाइलर में शुद्धता की जांच को धक्का देते हैं।