Как правильно присвоить несколько interface переменной typescript
У меня есть такой код на Typescript
const data: ICompetitions | IApiRequestError = yield competitions.json();
в одном интерфейсе описаны данные которые возвращает api, а интерфейс IApiRequestError описывает возвращаемые api данные в случае ошибки
export interface ICompetitions {
data: any;
competitions: Array<ICompetitionOne>,
count: number,
filters: object
}
export interface IApiRequestError {
message: string,
error: number
}
Но почему то когда я задаю условие
if(data.error) {
}
Мне высвечивает ошибку
Свойство "error" не существует в типе "ICompetitions | IApiRequestError". Свойство "error" не существует в типе "ICompetitions".ts(2339)
Как правильно поступить в данном случае?
Ответы (1 шт):
Автор решения: Юрий Копоть
→ Ссылка
export interface ICompetitions {
data: any;
count: number;
filters: object;
}
export interface IApiRequestError {
message: string;
error: number;
}
const dataResult: ICompetitions | IApiRequestError = yield competitions.json();
// Проверка уникального полня любого из interface
if ('count' in dataResult) {
// теперь dataResult тут как ICompetitions
const {data, count, filters} = dataResult;
} else {
// а тут как IApiRequestError
const {error, message} = dataResult;
}