ionic3 - Typescript-fel Typen 'ArrayBuffer' kan inte tilldelas typen 'Item[]'
I mitt Ionic-projekt vill jag hämta rader från en tabell i en PostgreSQL-databas och sedan tilldela raderna till en item[]: currentItems.
Jag kontrollerar retur-raderna från PostgreSQL, de är i format som:
[
anonymous
{
name: jack,
email: [email
}
anonymous
{
name: mark,
email: [email
}
]
Men när jag tilldelar det till item[]: currentItems får jag felet som: Typescript-fel Typ 'ArrayBuffer' kan inte tilldelas till typ 'Item[]'.
Nedan är en del av min inoiska kod:
item.ts:
export class Item {
constructor(fields: any) {
// Quick and dirty extend/assign fields to this model
for (const f in fields) {
// @ts-ignore
this[f] = fields[f];
}
}
}
list-master.ts:
export class ListMasterPage {
currentItems: Item[];
params: { uid: string } = {
uid: "test"
};
constructor(public navCtrl: NavController,
public items: Items,
public modalCtrl: ModalController,
public globalvar: GlobalvarProvider,
public toastCtrl: ToastController) {
this.params.uid = this.globalvar.userIdentifier
this.items.query(this.params).subscribe((resp) => {
/* here assign the received rows from database to the currentItems */
this.currentItems = resp;
}, (err) => {
});;
}
items.ts
export class Items {
constructor(public api: Api) { }
query(params?: any) {
/* here get the rows from the postgresql database, I have confirmed the data received is in the format mentioned in above question description */
return this.api.get('getfriends', params);
}
add(item: Item) {
}
delete(item: Item) {
}
}
Tack
Svar #1
Det verkar som att du förmodligen har giltiga enkla objekt från att parsas JSON. För att felsöka varför TypeScript tycker att typen är ArrayBuffer skulle jag behöva se deklarationen av get-metoden som anropas i Items.prototype.query-metoden. Om du vill ha Item-objekt istället för enkla objekt måste du instansiera dem själv, t.ex.:
this.currentItems = (<any[]>resp).map((i) => new Item(i));
eller använd ett serialiseringsbibliotek.
