मेरे पास जावास्क्रिप्ट ऑब्जेक्ट है जैसे:

const childDict = {
  address: {
    zip: "GGHG654",
    city: "Morocco",
    number: 40
  }
}

मैं इसे लूप में गतिशील रूप से किसी अन्य मूल शब्दकोश में जोड़ना चाहता हूं:

let parentDict = {}

for(let i = 0 ; i < 3; i++){
  parentDict["place" + i] = childDict
}

तो अंत में मैं इस तरह एक ताना के साथ समाप्त होता हूं:

{
  place0: {
    address: {
      zip: "GGHG654",
      city: "Morocco",
      number: 40
    }
  },
  place1: {
    address: {
      zip: "GGHG654",
      city: "Morocco",
      number: 40
    }
  }
}

हालांकि लूप के लिए मुझे एक संकलन त्रुटि दे रहा है:

Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{}'.
  No index signature with a parameter of type 'string' was found on type '{}'.
0
user7331538 18 मार्च 2020, 12:57
वर्तमान कोड के साथ आपको क्या समस्या है?
 – 
palaѕн
18 मार्च 2020, 12:59
ParentDict["place" + i] एक कंपाइल एरर दे रहा है। मैंने त्रुटि को शामिल करने के लिए प्रश्न संपादित किया।
 – 
user7331538
18 मार्च 2020, 13:02
केवल चाइल्डडिक्ट आइटम की लंबाई तक लूप करें
 – 
Juhil Somaiya
18 मार्च 2020, 13:04

4 जवाब

आपको केवल मूल शब्दकोश में उपयुक्त इंटरफ़ेस जोड़ना होगा क्योंकि टाइपस्क्रिप्ट स्वचालित रूप से प्रारंभिक मान के आधार पर प्रकार निर्दिष्ट करता है, जिसमें कोई कुंजी नहीं होती है

interface IParentDict {
    [key: string]: any; // possibly change any to the typeof child dict
}
const parentDict: IParentDict = {};
1
Krzysztof Krzeszewski 18 मार्च 2020, 13:07
let parentDict = {}

इसका कोई प्रकार स्पष्ट रूप से सेट नहीं है जो इस समस्या का कारण बन रहा है। एक any प्रकार प्रदान करने का प्रयास करें जैसे:

let parentDict:any = {}

या, अधिक सटीक होने के लिए:

let parentDict:{[key: string]: object} = {}
1
palaѕн 18 मार्च 2020, 13:20

आपका समाधान प्रकार का काम करता है, आपको किसी भी प्रकार के माता-पिता के प्रकार को निर्दिष्ट करने की आवश्यकता है। क्या आपने लूप के बाद कंसोल.लॉग (पैरेंटडिक्ट) करने का प्रयास किया था

0
ebzeal 18 मार्च 2020, 13:09

इसे इस तरह से आजमाएं

let parentDict: any = {};

एक अन्य विकल्प प्रकार को अधिक सही तरीके से निर्दिष्ट कर सकता है, जैसे

let parentDict: {[key: string]: any} = {};

एक और हैकी तरीका है

let parentDict = {}

for(let i = 0 ; i < 3; i++){
    (parentDict as any)["place" + i] = childDict
}
0
qiAlex 18 मार्च 2020, 13:32