TypeScript त्रुटि: इंडेक्स पैरामीटर यूनियन प्रकार नहीं हो सकता
सभी को नमस्ते! मैं TypeScript में नया हूँ और एक समझ से परे त्रुटि का सामना किया। मैं एक ऐसा ऑब्जेक्ट बनाने की कोशिश कर रहा हूँ जिसमें कुंजियाँ केवल दो प्रकार की स्ट्रिंग हो सकती हैं: `'user'` या `'admin'`। मैंने यह कोड लिखा:
```typescript
type Role = 'user' | 'admin';
interface UserData {
name: string;
age: number;
}
// एक ऑब्जेक्ट बनाने की कोशिश कर रहा हूँ जहाँ कुंजी भूमिका है और मान उपयोगकर्ता डेटा है
const users: { [key: Role]: UserData } = {};
```
लेकिन TypeScript यह त्रुटि देता है: *"An index signature parameter type cannot be a union type. Consider using a mapped object type instead"*। मैं समझता हूँ कि इंडेक्स सिग्नेचर आमतौर पर `string`, `number` या `symbol` के साथ काम करते हैं, लेकिन लिटरल स्ट्रिंग्स के यूनियन का उपयोग क्यों नहीं किया जा सकता? आखिर ये भी तो स्ट्रिंग्स हैं!
मुझे चाहिए कि ऑब्जेक्ट `users` में केवल `'user'` और `'admin'` कुंजियाँ ही हों, और `users['guest']` तक पहुँचने की कोशिश करने पर TypeScript कंपाइलेशन के समय त्रुटि दे। इसे सही तरीके से कैसे करें? क्या ऐसे मामलों के लिए कोई दूसरा सिंटैक्स है?