【发布时间】:2019-04-12 16:13:01
【问题描述】:
我通常是 observable 的一员,但为了防止在这种情况下出现“回调地狱”,我在上面使用 toPromise() 以方便起见,但在尝试定义返回类型时我收到了 lint 错误消息:
“对象”类型可以分配给极少数其他类型。您的意思是改用“任何”类型吗?类型“对象”缺少 'ReferralReasons[]' 类型的以下属性:长度
我的代码(this.apiSvc.get 返回 http.get 对象):
async getJobReferralReasons(): Promise<Array<ReferralReasons>> {
return this.apiSvc.get(`${this.API_JOB}/ReferralReasons`).toPromise();
}
但这很好,没有错误:
async getJobReferralReasons(): Promise<any> {
return this.apiSvc.get(`${this.API_JOB}/ReferralReasons`).toPromise();
}
所以当调用它时,我会在一个数组中直接得到一组推荐代码:
const reasons = await this.helpdeskSvc.getJobReferralReasons();
我原以为更改 any 并设置类型 Array<ReferralReasons> 会起作用,我缺少什么来设置正确的类型?
---更新
我的服务调用如下所示:
get(apiURL, data = {}) {
return this.http.get(this.parseURL(apiURL), {
headers: this.getHeaders(),
params: this.parseGetParams(data)
});
}
但这可行,但它不是我所拥有的(你可以看到它略有不同,我不能将类型放在 get 之前):
async getJobReferralReasons2(): Promise<ReferralReasons[]> {
return this.http.get<ReferralReasons[]>('', {}).toPromise();
}
【问题讨论】:
-
你能真实地描述 StackBlitz 中的错误吗? ashish.gd 所说的应该有效
标签: angular typescript http promise