TypeScript में `unknown` और `any` प्रकार: क्या अंतर है और कब क्या उपयोग करें?
सभी को नमस्ते! मैंने हाल ही में TypeScript सीखना शुरू किया है और दो प्रकारों पर ध्यान दिया जो पहली नज़र में बहुत समान लगते हैं: `any` और `unknown`। दोनों किसी भी प्रकार के मान को संग्रहीत करने की अनुमति देते हैं, लेकिन मुझे लगता है कि उनके बीच कुछ महत्वपूर्ण अंतर है जिसे मैं समझ नहीं पा रहा हूँ।
उदाहरण के लिए, मैं एक function लिख रहा हूँ जो API से डेटा प्राप्त करता है। मुझे पहले से नहीं पता कि वास्तव में क्या आएगा — यह object, string या number हो सकता है। मैं अभी यह इस तरह कर रहा हूँ:
```typescript
function processData(data: any) {
console.log(data.toUpperCase()); // बिना त्रुटि के काम करता है, लेकिन runtime में क्रैश हो सकता है
}
```
लेकिन अगर मैं `unknown` का उपयोग करने की कोशिश करूँ, तो मुझे त्रुटि मिलती है:
```typescript
function processDataSafe(data: unknown) {
console.log(data.toUpperCase()); // त्रुटि: Object is of type 'unknown'
}
```
ऐसा क्यों? दोनों प्रकार कुछ भी संग्रहीत करने की अनुमति देते हैं, लेकिन `unknown` कठोर व्यवहार करता है। मैंने पढ़ा है कि `unknown` `any` का type-safe विकल्प है, लेकिन मैं पूरी तरह से नहीं समझता कि व्यवहार में इसका क्या मतलब है।