我通常是一个可观察的对象,但是为了防止在这种情况下发生“回调地狱”,我在上面使用了toPromise()
,但尝试定义返回类型时却收到了lint错误消息: / p>
“对象”类型可分配给很少的其他类型。您的意思是改用“ any”类型吗?类型“对象”缺少 类型“ ReferralReasons []”中的以下属性:length
我的代码(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)
});
}
但是这可行,但这不是我所拥有的(如您所见,它略有不同,并且我不能在获取之前输入类型):
async getJobReferralReasons2(): Promise<ReferralReasons[]> {
return this.http.get<ReferralReasons[]>('', {}).toPromise();
}
答案 0 :(得分:0)
您需要使用预期的返回类型更新http get
的通话,以使promise
能够识别它。
示例:
apiSvc ,使用T
模板进行输入。
get<T>(apiURL, data = {}) {
return this.http.get<T>(this.parseURL(apiURL), {
headers: this.getHeaders(),
params: this.parseGetParams(data)
});
}
组件使用实际类型
async getJobReferralReasons(): Promise<Array<ReferralReasons>> {
return this.apiSvc.get<Array<ReferralReasons>>(`${this.API_JOB}/ReferralReasons`).toPromise();
}
OR
async getJobReferralReasons(): Promise<ReferralReasons[]> {
return this.apiSvc.get<ReferralReasons[]>(`${this.API_JOB}/ReferralReasons`).toPromise();
}