根据来自角度的服务器响应进行类型转换多个响应

时间:2019-03-22 08:04:22

标签: angular angular-httpclient rxjs-pipeable-operators

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”中缺少属性“ code”

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

1 个答案:

答案 0 :(得分:0)

您将响应强制转换为LoginResponse,然后将其强制转换为LoginError,这实际上是不同的接口。因此,LoginResponse不能是LoginError,这就是您遇到此错误的原因。

如果登录失败,API将返回 401 ,您可以catch the error并将错误响应投射到所需的内容。

  

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