如何返回对象的可观察量,其中对象具有使用 http 请求构建的属性?[RxJs]



我有一个类型,我想从一个与 http 请求获得的方法不同的方法返回 - 我基本上想将该 http 请求的结果分配为对象的属性并返回该对象的可观察量。我理解为什么下面的内容不起作用,而是为了拥有代码。

getAuditsByObjectAndType<T>(object: T): Observable<IAuditInformation<T>> {
const auditInfo: IAuditInformation<T> = {
audits: [],
object: object
};
auditInfo.audits = this.get<IAudit>(`audits?id=${object.id}`)
return Observable.of(auditInfo)
}

有没有一个操作员可以帮助我做我想做的事?

编辑:

有一个有效的实现,但可能会好得多。

getAuditsByObjectAndType<T>(object: T): Observable<IAuditInformation<T>> {
const auditInfo: Observable<IAuditInformation<T>> = Observable.of({
audits: [],
object: object
});
return this.get<IAudit>(`AuditItems?id=${object.id}`)
.combineLatest(auditInfo, (audits, info) => {
info.audits = audits;
return info
});
}

您可以映射响应:

import 'rxjs/add/operator/map';
getAuditsByObjectAndType<T>(object: T): Observable<IAuditInformation<T>> {
return this.get<IAudit>(`audits?id=${object.id}`)
.map(audits => ({
audits,
object
}));
}

但是,打字稿无法知道您的T包含id属性,要解决此问题,您可以执行以下操作:

interface TheObjectWithAnId {
id: number;
}
getAuditsByObjectAndType<T extends TheObjectWithAnId>(object: T): Observable<IAuditInformation<T>>

相关内容

最新更新