# वैकल्पिक और readonly प्रॉपर्टीज़ — टाइपस्क्रिप्ट

Source: https://www.geekswithgeeks.com/hi/typescript/ts-optional-readonly-props

> प्रॉपर्टीज़ को हमेशा-मौजूद-नहीं, या कभी-न-बदलने वाला चिह्नित करें।

## वैकल्पिक प्रॉपर्टीज़

प्रॉपर्टी नाम के बाद `?` का मतलब है कि यह ऑब्जेक्ट में पूरी तरह ग़ायब हो सकती है।

```typescript
interface Config {
  host: string;
  port?: number;   // optional
}

const c1: Config = { host: "localhost" };        // OK
const c2: Config = { host: "localhost", port: 8080 }; // OK
```

## readonly प्रॉपर्टीज़

`readonly`, किसी प्रॉपर्टी को एक बार (आमतौर पर बनते समय) सेट करने देता है पर बाद में दोबारा असाइनमेंट रोक देता है।

```typescript
interface Point {
  readonly x: number;
  readonly y: number;
}

const p: Point = { x: 0, y: 0 };
p.x = 10;
// Error: Cannot assign to 'x' because it is a read-only property.
```

## readonly केवल कंपाइल-टाइम पर

`readonly` कंपाइल-टाइम पर मिटा दिया जाता है — यह TS कोड में सुरक्षा देता है, उस JS कोड से नहीं जो रनटाइम पर टाइप्स को नज़रअंदाज़ करता है।
