Когда мой метод обслуживания subscribe
запускается, я возвращаю объект вместо фактического класса, и я не могу понять, почему. Я создал метод в своем сервисе, который возвращает реальный класс, основанный на JSON, а не только интерфейс json:
getById(id: number): Observable<DetailsForLabAndCaller> {
return this.http.get<DetailsForLabAndCaller>(`${this.baseUrl}/${id}/new`).pipe(
tap(x => DetailsForLabAndCaller.fromJson(x))
);
}
И мой fromJson
метод выглядит так:
static fromJson(json: any): DetailsForLabAndCaller {
const ret: DetailsForLabAndCaller = Object.assign(new DetailsForLabAndCaller(), json);
ret.me = WorkerInfo.fromJson(ret.me);
ret.lab = Lab.fromJson(ret.lab);
console.info(`fromJson: has lab type: ${ret.lab instanceof Lab}`);
console.info(`fromJson: has WorkerInfo type: ${ret.lab.delegate instanceof WorkerInfo}`);
console.info(`fromJson: returns a DetailsForLabAndCaller: ${ret instanceof DetailsForLabAndCaller}`);
return ret;
}
Когда вызывается служба, я вижу, что каждое из этих сообщений консоли возвращает true
. Однако, когда я тогда пытаюсь использовать этот сервис, я просто получаю object
назад, а не реальный объект класса:
this.spaceService.getById(id).subscribe(obj => {
console.info(`Call returned a real class: ${obj instanceof DetailsForLabAndCaller}`);
Это консольное сообщение, которое печатается после первых трех, гласит false
. Почему я просто возвращаю ванильный объект в этот момент вместо реального класса?