टाइपस्क्रिप्ट में मैं एक टाइप की गई ऐरे को निम्नानुसार घोषित कर सकता हूं:

interface Something {
  a: number,
  b: number
}

const arr: Array<Something> = [{a:1, b:2}, {a:3, b:4}]

लेकिन मैं वस्तु के बराबर के प्रकार की घोषणा कैसे करूं:

const obj = {
  propA: {a:1, b:2},
  propB: {a:3, b:4}
}

यहां, मुझे प्रोपा, प्रोपबी, आदि के नामों की परवाह नहीं है और मुझे ऐसा इंटरफ़ेस नहीं चाहिए जो शीर्ष स्तर के गुणों के नामों को परिभाषित करे, लेकिन मैं यह लागू करना चाहता हूं कि प्रत्येक संपत्ति का मूल्य कुछ प्रकार का है। क्या यह संभव है? अग्रिम में धन्यवाद।

2
danday74 4 नवम्बर 2020, 07:28

2 जवाब

सबसे बढ़िया उत्तर

आप { [key: string]: Something } का उपयोग कर सकते हैं:

const obj: { [key: string]: Something } = {
  propA: {a:1, b:2},
  propB: {a:3, b:4}
}

खेल का मैदान

3
Psidom 4 नवम्बर 2020, 07:34

@Psidom ने सही उत्तर दिया है। उसे श्रेय। मैं सिर्फ इसलिए उत्तर दे रहा हूं क्योंकि ऊपर दिए गए कोड को आपके कस्टम ऑब्जेक्ट के दूसरे इंटरफ़ेस को परिभाषित करके मॉड्यूलर किया जा सकता है।

interface myJsonObject{
 [key: string] : Something
}

const obj: myJsonObject = {
 propsA : {a: 1, b:2},
 propsB : {a: 3, b:4}
}

जब आप वही myJsonObject किसी अन्य टाइपस्क्रिप्ट फ़ाइल में चाहते हैं तो यह आपकी मदद कर सकता है। आप इस इंटरफ़ेस को *.d.ts में जोड़ सकते हैं और इसे निर्यात कर सकते हैं और इसे किसी भी टाइपस्क्रिप्ट फ़ाइल में आयात कर सकते हैं।

//my.d.ts
interface Something {
  a: number,
  b: number
}
export interface myJsonObject {
  [key: string] : Something
}

//any_typescript_file.ts
import { myJsonObject } from "./my.d.ts"

const obj: myJsonObject = {
 propsA : {a: 1, b:2},
 propsB : {a: 3, b:4}
}
2
Subrato Patnaik 4 नवम्बर 2020, 14:58