在打字稿函数中返回2种不同类型的最佳实践?

时间:2017-04-03 21:10:10

标签: angular typescript rxjs angular2-observables

我有一个执行帖子的api函数并返回ModelAResponse的Observable(我有的接口)

我想根据返回的状态返回一个ModelAResponse或B的Observable。

这是我的两个响应模型:

export interface ModelAResponse {
  res: ModelA;
}

export interface ModelBResponse {
  res: ModelB
}
  

(ModelA,ModelB是放在另一个类中的接口)

所以目前我只支持一次模特回归:

public myApiFunc(req: MyRequestModel): Observable<ModelAResponse> {
      ...
this.http.post("my/api/path", req, {headers: myHeaders}),
      (jsonReturned) => status === 200 ? {res: jsonReturned} : undefined);
      ...
}

如何根据打字稿最佳实践方式中的状态更改此func以返回ModelAResponse或ModelBResponse?

1 个答案:

答案 0 :(得分:2)

你不能这样做。 Typescript只能在构建时基于静态分析来键入内容,你的描述需要Typescript在构建时知道API调用的结果,而不是这样做。

您可以做的最好的事情是表明您的API调用可以返回任何一个接口:

public myApiFunc(req: MyRequestModel): Observable<ModelAResponse | ModelBResponse>

但是,这仍然需要您在运行时确定其AB

相关问题