is not assignable to android.app.activity,Type 'void' is not assignable to object

export class LoginInfo {

userName: string;

password: string;

}

public getLoginInfo(id: number): Promise {

return this.http.get(this.url + id + '/' + '/loginInfo')

.toPromise()

.then(response => response.json() as LoginInfo)

.catch((error: Response) => {

this.handleError(error);

});

}

Got this code for retrieving data from API controller. When compiling it in ts, I am always getting this error:

Type 'Promise' is not assignable to type 'Promise'

Type 'void' is not assignable to type 'LoginInfo'

Here are my package versions:

"typescript": "2.5.2",

"@angular/compiler": "4.3.6"

"@angular/compiler-cli": "4.3.6"

# Answer 1

4d350fd91e33782268f371d7edaa8a76.png

You need to return something on the error handling case or throw a new error. The method promises to return a LoginInfo but if an error occurs you return nothing, typescript protect you from accidentally returning nothing, if that is what you want you should return null explicitly:

public getLoginInfo(id: number): Promise {

return this.http.get(this.url + id + '/' + '/loginInfo')

.toPromise()

.then(response => response.json() as LoginInfo)

.catch((error: Response) => {

this.handleError(error);

// return null;

throw new Error();

});

}

As a side note, the async/await version may be more readable:

public async getLoginInfo(id: number): Promise {

try{

let response = await this.http.get(this.url + id + '/' + '/loginInfo').toPromise();

return response.json() as LoginInfo;

} catch (error) {

this.handleError(error);

return null;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值