小编Gre*_*ode的帖子

RxJS重构嵌套的映射语句

我有一个服务,用于@angular/http从API加载数据.我想为我Components使用这些数据创建检索数据的投影.

因此我写了以下代码:

getById(id: string) {
  return this.http
    .get(`https://my-api.io/${id}`)
    .map(response => response.json())
    .map(contracts =>
      contracts.map(contract =>        # <- Nested map
        new Contract(
          contract['id'],
          contract['description']
        )
      )
    );
}
Run Code Online (Sandbox Code Playgroud)

在第6行中,我有一个嵌套的map-Statement,降低了我的代码的可读性.

我可以做得更好吗?在RxJS中是否有一个操作符,我可以使用它而不是创建这种嵌套?

提前致谢!

refactoring code-cleanup rxjs rxjs5 angular

6
推荐指数
1
解决办法
4836
查看次数

Union-Type 变为 Intersection-Type

问题

我想创建一个工厂,根据给定的参数提供不同的功能。这可以通过条件类型来解决。

type DispatchConditional<TPayload> = TPayload extends undefined
  ? () => void
  : (payload: TPayload) => void;
Run Code Online (Sandbox Code Playgroud)

该类型DispatchCondition可以通过接口来检测。

interface ActionDispatcher<TPayload> {
  dispatch: DispatchConditional<TPayload>;
}
Run Code Online (Sandbox Code Playgroud)

如果我根据上面的定义构建一个工厂,如果Union-Type使用 a ,它就会崩溃。payloadUnion()不知何故,由定义的联合类型变成了Intersection-Type.

在此输入图像描述

问题

我必须进行哪些调整才能为dispatch支持联合类型的方法生成类型定义?

操场

typescript conditional-types

4
推荐指数
1
解决办法
502
查看次数