मेरे पास नीचे यह सरल उदाहरण है जहां मैं वस्तुओं की एक सरणी को पशु वस्तुओं की एक सरणी में बदलना चाहता हूं लेकिन मुझे यह त्रुटि Type 'Animal[]' is missing the following properties from type 'Promise<Animal[]>': then, catch, [Symbol.toStringTag] Controller.getPersons() फ़ंक्शन में मिलती है। मुझे पूरा यकीन नहीं है कि इस त्रुटि का कारण क्या है।

class Animal {
  name: string;
  colour: string;

  constructor(name: string, colour: string) {
    this.name = name;
    this.colour = colour;
  }
}

वह वर्ग जहां मेरे पास यह कार्य है जो पशु वस्तुओं की एक सरणी वापस करने का वादा करता है getPersons(): Promise<Animal[]>

class Controller {
  data: { name: string; colour: string }[];

  constructor(data: { name: string; colour: string }[]) {
    this.data = data;
  }

  getPersons(): Promise<Animal[]> {
    const animals = this.data.map(a => new Animal(a.name, a.colour));
    console.log("animals -----> ", animals);
    console.log("type -----> ", typeof animals);
    return animals;
  }

यह मेरा नमूना डेटा है जिसे मैं पशु वस्तुओं की एक सरणी में बदलना चाहता हूं

const data = [
   { name: "Dog", colour: "Black" },
   { name: "Cat", colour: "White" }
];

const c = new Controller(data);
c.getPersons();

किसी भी सहायता के लिए धन्यवाद। पहले ही, आपका बहुत धन्यवाद।

0
Big Smile 7 सितंबर 2019, 19:03

1 उत्तर

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

आपकी विधि getPersons() का रिटर्न प्रकार Promise<Animal[]> है। हालाँकि जो आप वास्तव में लौट रहे हैं वह सिर्फ जानवरों की एक सरणी है।

जैसा कि @ttugates टिप्पणियों में बताते हैं, आपके पास दो विकल्प हैं:

वापसी प्रकार बदलें

कार्यान्वयन से मेल खाने के लिए विधि के वापसी प्रकार को Animal[] में बदलें:

getPersons(): Animal[] {
    // ...
}

कार्यान्वयन बदलें

यदि आपको वास्तव में एक निश्चित इंटरफ़ेस के अनुरूप वादा करने की ज़रूरत है, तो एक बनाएं और उसे वापस कर दें:

getPersons(): Promise<Animal[]> {
    const animals = this.data.map(a => new Animal(a.name, a.colour));
    console.log("animals -----> ", animals);
    console.log("type -----> ", typeof animals);
    return Promise.resolve(animals);
}
1
lukasgeiter 7 सितंबर 2019, 19:35