基于角度的服务器响应的Typecast多个响应

问题描述 投票:0回答:1
export class LoginResponse {
value: string;
expiration: string;
tokenType: string;
refreshToken: {
    value: string;
    expiration: string;
};
scope: [];
additionalInformation: {};
expiresIn: string;
expired: boolean;

}

export class LoginErrorResponse {
code: number;
error: string;
message: string;
sucess: boolean;

}

return this.httpClient.post(url,body,headers).pipe(map(res=><LoginResponse>res),map(res=><LoginErrorResponse>res));

错误:将类型'LoginResponse'转换为类型'LoginErrorResponse'可能是一个错误,因为这两种类型都没有与另一种类型充分重叠。如果这是故意的,首先将表达式转换为“未知”。 “LoginResponse”类型中缺少属性“代码”

我可以从server获得任何一个响应。我想根据服务器响应对响应进行类型转换,并且应该返回可观察到的响应。

angular angular-httpclient rxjs-pipeable-operators
1个回答
0
投票

你将响应转换为LoginResponse,之后转换为LoginError,它们是非常不同的接口。因此,LoginResponse不能是LoginError这就是为什么你有这个错误。

如果登录失败,API应返回401,您可以catch the error并将错误响应转换为您想要的。

您的API无法在具有相同状态代码的同一调用中返回2个不同的响应模型。

© www.soinside.com 2019 - 2024. All rights reserved.