【发布时间】:2018-02-02 14:46:38
【问题描述】:
由于我已将我的 RxJS 更新到最新版本(5.4.3 并且无法降级),我遇到了这个错误:
错误:(94, 9) TS2322:Type 'Promise' is not 可分配给类型“承诺”。 'then' 的属性类型是 不相容。 类型 '(onfulfilled?: (value: number | ErrorObser...' 不可分配 输入 '{ (onFulfilled?: (value: number) => U | Thenable, onRejected?: (error: any) => U |然后可以...'。 参数 'onfulfilled' 和 'onFulfilled' 的类型不兼容。 参数 'value' 和 'value' 的类型不兼容。 输入'号码 | ErrorObservable' 不可分配给类型 'number'。 类型 'ErrorObservable' 不可分配给类型 'number'。
这是我的代码:
countFiles(from:any = false, limit:any = false, search: any = null, parent_page_id: any = ''): Promise<number> {
(...) // Some code
return this.http
.post(this.apiUrl + 'v1/countFiles', JSON.stringify(params), {headers: headers})
.toPromise()
.then(response => <number> response.json()['count'])
.catch(this.handleError);
}
错误处理函数:
private handleError(error: any) {
let errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : 'Server error';
if(typeof error._body !== 'undefined') {
let body = <HTMLElement> document.querySelector('body');
body.innerHTML = '';
document.write(error._body);
}
this.alertService.addAlert('error','error.general');
console.error(errMsg); // log to console instead
return Observable.throw(errMsg);
}
有人可以帮忙吗?
【问题讨论】:
-
我第二个 Kld,确切地说是 2.4.2
-
您也应该包含
handleError的代码。 -
@dockleryxk - 我不明白你。我在 RxJS 版本中犯了一个错误。是 5.4.3,而不是 5.4.2,但我不知道您在写评论时的想法。
-
@cartant - 我已经在帖子中添加了它。谢谢!
-
Kld 删除了他们的评论,这让我看起来像个白痴!他们的评论说要检查你的打字稿是 2.4 版