【问题标题】:Create classes for Single, Maybe and Completable in RxJS 6在 RxJS 6 中为 Single、Maybe 和 Completable 创建类
【发布时间】:2018-10-17 19:02:53
【问题描述】:

创建自己的 Observable 扩展类是一种好习惯吗?我想实现我自己的 Single 和 Completable 类,以了解与 observable 可以返回的数据的数量或缺失,我希望它作为一个类,因为我使用 reclect-metadata 并且我在我的装饰器中使用 design:returntype 所以我需要一个类而不是别名(因为使用别名返回的类型将始终是 Object 而不是原始类构造函数)。

这个想法是:对于 Single observables 使用单个运算符,对于 Completable observables 使用 ignoreElements 运算符,但在 Typescript for Singles 中没有类我不知道仅通过读取代码 Observable 来知道数据量,那个 observable 可以返回一个或多个或无,我想要一个针对特定情况的 Single,这就是我想要的:

// some methods in some class
loginUser(userName: string, password: string): Single<User>
saveUser(user: User): Completable

对我来说,这更具可读性(因为我在我的 Android 项目中使用 RxJava 2)并且我知道是否期望,没有我需要做的:

loginUser(userName: string, password: string): Observable<User> // if i chain this with other observables i don't know how much users this will return
saveUser(user: User): Observable<void> // simply ugly

这对我的眼睛不好你知道吗?所以我想创建这些类以便更好地阅读我的代码和更好地实现。

【问题讨论】:

    标签: typescript rxjs rxjs5 rxjs6


    【解决方案1】:

    您有充分的理由希望更具体地了解 Observable 的实际行为。不幸的是,RxJS 中没有内置机制来指定这一点。

    如果您使用运算符,扩展 Observable 可能会非常困难,因为它们是使用内部创建的主题粘合在一起的。

    不是在运行时使用类和reflect-metadata API,而是使用类型(接口)就足够了吗?这些可以帮助向其他开发人员记录 Observable 的行为,也可以用于编译时检查(例如,只接受 Single 类型的函数)。

    有一个项目可以作为起点,如何实现这一目标:https://github.com/cartant/rxjs-traits

    它实现了一些运算符的类型检查,并根据这些运算符计算 Observable 的最终类型。不幸的是,它目前似乎没有继续。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      • 2020-04-16
      • 1970-01-01
      相关资源
      最近更新 更多