typescript - Egenskapen 'count' finns inte på typen '{}'


Hur blir jag av med Typescript-fel för datastrukturen som skickas in i ett then-löfte?

Jag får följande fel:

Egenskapen 'count' finns inte på typen '{}'

För följande kod:

this.userData.getSocialLinks(this.navParams.get('image_owner_id')).then(socialLinks => {
  var i = 0;
  for (i=0; i < socialLinks.count; i++) {
    if (socialLinks.results[i].social_type == 'TW') {
      this.profile.twitter = socialLinks.results[i].social_address;
      this.isExistingTW = true;
      this.twEntryID = socialLinks.results[i].id;
    }
    else if (socialLinks.results[i].social_type == 'IN') {
      this.profile.instagram = socialLinks.results[i].social_address;
      this.isExistingIN = true;
      this.inEntryID = socialLinks.results[i].id;
    }
  }
});

Jag gissar att jag måste definiera socialLinks på något sätt men kan inte lista ut var.

Svar #1

Det standardmässiga sättet är att skapa någon form av gränssnitt och använda det som en typ:

// describe what is coming    
export interface IData<T> {
    count: number;    
    results: T[];
}

// use that IData
this.userData
 .getSocialLinks(this.navParams.get('image_owner_id'))
 .then(( socialLinks: IData<any>) => {

Om det är mer tydligt vad T är, t.ex. IPerson... kan vi använda IData<IPerson>

Lek med det här

Relaterade artiklar