键入没有值的Observable事件的最佳实践

时间:2018-04-23 10:08:10

标签: typescript rxjs observable

我想定义一个返回Observable的方法,但是我没有任何数据,我应该起诉什么签名?

myMethod(): Observable<null>;
myMethod(): Observable<void>;
myMethod(): Observable<{}>;

在对方法中的返回进行编码时,我想在第一个订阅回调中接收下一个事件,所以我不能使用Observable.empty();

我可以使用以下内容:

myMethod(): Observable<null>; //I could use  return Observable.of(null);
myMethod(): Observable<void>; //I could use  return Observable.of(null);
myMethod(): Observable<{}>; //I could use  return Observable.of({});

我没有找到正式的方法,但也许有一个标准的解决方案......什么是最佳做法?

1 个答案:

答案 0 :(得分:3)

我认为最好的方法是使用myMethod(): Observable<void>;,因为null仍然是一个经常用来代替对象的有效值。另外{}是一个空对象(没有属性的对象)。

您可以向void发送值,如下所示:

const s = new Subject<void>();
s.next();
s.next(void 0);

您还可以将任何现有的Observable映射到Observable<void>

source
  .pipe(
    mapTo(void 0),
  )
  ...
相关问题