类型 'Promise<Hotel[]>' 缺少类型 'Hotel[]' 的以下属性:length、pop、push、concat 和另外 26 个
Type 'Promise<Hotel[]>' is missing the following properties from type 'Hotel[]': length, pop, push, concat, and 26 more
与 this question 相关。我决定用 Promises 重写我的代码,但是我如何在不需要所有 Array 属性的情况下 Promise 一个接口数组?
import { Component, OnInit } from '@angular/core';
import PouchDB from 'node_modules/pouchdb';
interface Hotel {
name: string;
}
@Component({
selector: 'app-tab1',
templateUrl: 'tab1.page.html',
styleUrls: ['tab1.page.scss']
})
export class Tab1Page {
hotels: any;
item: Hotel[];
constructor() {
this.hotels = new PouchDB(<!-- db link -->, {
auto_compaction: true
});
}
ngOnInit() { this.item = this.ionViewWillEnter(); }
ionViewWillEnter(): Promise<Hotel[]> {
var promise = this.hotels.allDocs({
include_docs: true
}).then(function(result): Hotel[] {
var data = result.rows.map(function(row): Hotel {
return({name: row.doc.name});
});
return(data);
}).catch(function(err) {
console.log(err);
});
return(promise);
}
}
Type 'Promise<Hotel[]>' is missing the following properties from type 'Hotel[]': length, pop, push, concat, and 26 more.
[ng] 23 ngOnInit() { this.item = this.ionViewWillEnter(); }
ionViewWillEnter() returns 一个承诺,而不是一个值。所以你必须开始承诺并使用 then() 或 await 给它一个回调。
ngOnInit() { this.ionViewWillEnter().then(item => this.item = item); }
我建议您阅读一些 this docs 关于承诺的内容。
与 this question 相关。我决定用 Promises 重写我的代码,但是我如何在不需要所有 Array 属性的情况下 Promise 一个接口数组?
import { Component, OnInit } from '@angular/core';
import PouchDB from 'node_modules/pouchdb';
interface Hotel {
name: string;
}
@Component({
selector: 'app-tab1',
templateUrl: 'tab1.page.html',
styleUrls: ['tab1.page.scss']
})
export class Tab1Page {
hotels: any;
item: Hotel[];
constructor() {
this.hotels = new PouchDB(<!-- db link -->, {
auto_compaction: true
});
}
ngOnInit() { this.item = this.ionViewWillEnter(); }
ionViewWillEnter(): Promise<Hotel[]> {
var promise = this.hotels.allDocs({
include_docs: true
}).then(function(result): Hotel[] {
var data = result.rows.map(function(row): Hotel {
return({name: row.doc.name});
});
return(data);
}).catch(function(err) {
console.log(err);
});
return(promise);
}
}
Type 'Promise<Hotel[]>' is missing the following properties from type 'Hotel[]': length, pop, push, concat, and 26 more.
[ng] 23 ngOnInit() { this.item = this.ionViewWillEnter(); }
ionViewWillEnter() returns 一个承诺,而不是一个值。所以你必须开始承诺并使用 then() 或 await 给它一个回调。
ngOnInit() { this.ionViewWillEnter().then(item => this.item = item); }
我建议您阅读一些 this docs 关于承诺的内容。