के objरूप में निरूपित करना संभव है any, लेकिन यह टाइपस्क्रिप्ट का उपयोग करने के पूरे उद्देश्य को हरा देता है। obj = {}तात्पर्य objहै a Object। इसे चिह्नित करने anyसे कोई मतलब नहीं है। वांछित स्थिरता को पूरा करने के लिए एक इंटरफ़ेस निम्नानुसार परिभाषित किया जा सकता है।
interface LooseObject {
[key: string]: any
}
var obj: LooseObject = {};
या इसे कॉम्पैक्ट बनाने के लिए:
var obj: {[k: string]: any} = {};
LooseObjectकिसी भी स्ट्रिंग के साथ फ़ील्ड को कुंजी के रूप में स्वीकार कर सकते हैं और anyमान के रूप में टाइप कर सकते हैं ।
obj.prop = "value";
obj.prop2 = 88;
इस समाधान की वास्तविक लालित्य यह है कि आप इंटरफ़ेस में टाइपसेफ़ फ़ील्ड शामिल कर सकते हैं।
interface MyType {
typesafeProp1?: number,
requiredProp1: string,
[key: string]: any
}
var obj: MyType ;
obj = { requiredProp1: "foo"}; // valid
obj = {} // error. 'requiredProp1' is missing
obj.typesafeProp1 = "bar" // error. typesafeProp1 should be a number
obj.prop = "value";
obj.prop2 = 88;
हालांकि यह मूल प्रश्न का उत्तर देता है , @GreeneCreations द्वारा यहां दिए गए उत्तर समस्या का दृष्टिकोण करने के तरीके पर एक और दृष्टिकोण दे सकते हैं।