Я могу редактировать как внешний, так и внутренний интерфейсы
У меня есть служба, которая извлекает коммюнике. Это коммюнике может существовать (есть одно активное коммюнике) или может не существовать (нет активного коммюнике), поэтому API может ответить объектом JSON коммюнике или пустым объектом JSON.
Я обращаюсь с этим следующим образом:
getCommunique(): Observable<Communique | {}> {
return this.http.get(this.apiUrl + '/getCommunique').map((response) => {
if (Object.keys(response.json()).length != 0) {
return new Communique(response.json())
} else {
return {}
}
});
}
Это мой Communique
класс:
export class Comunique {
public id: number;
public title: string;
public content: string;
public date: Date;
public url: string;
public imageUrl: string;
constructor(input: ComuniqueRaw) {
this.id = input.id;
this.title = input.title;
this.content = input.content;
this.date = new Date(input.date.timestamp * 1000);
this.url = 'url' + input.slug;
this.imageUrl = 'url' + input.image;
}
}
Это работает ... Но это похоже на обходной путь. Разве наблюдаемое не должно возвращать только Communique
объекты? Но если не будет активного коммюнике, как будет создан объект Communique
? Я имею в виду, я могу добавить поле с чем-то вроде public exists: boolean;
в классе Communique
, но это тоже похоже на обходной путь (объект, который содержит только один boolean
).
Обрабатываю ли я это правильный путь? Или ... Как обработать ответ API, который может быть пустым объектом с помощью rx js Observables?