Введите несколько ответов на основе ответа от сервера в угловых - PullRequest
0 голосов
/ 22 марта 2019
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' может быть ошибкой, поскольку ни один из типов не совпадает в достаточной степени сДругой.Если это было сделано намеренно, сначала преобразуйте выражение в «неизвестное».Свойство 'code' отсутствует в типе 'LoginResponse'

Я могу получить любой из ответов от сервера. Я хочу типизировать ответ на основе ответа сервера и должен возвращать наблюдаемый из этого.

1 Ответ

0 голосов
/ 22 марта 2019

Вы приводите ответ к LoginResponse, а затем к LoginError, которые действительно являются различными интерфейсами. Так что LoginResponse не может быть LoginError, поэтому у вас есть эта ошибка.

Если вход не выполнен, API должен вернуть 401 , и вы можете отловить ошибку и привести ответ об ошибке к тому, что вы хотите.

Ваш API не смог вернуть 2-х разных моделей ответа на один и тот же вызов с тем же кодом состояния.

...