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

Gau*_*eel 5 observable rxjs typescript

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

myMethod(): Observable<null>;
myMethod(): Observable<void>;
myMethod(): Observable<{}>;
Run Code Online (Sandbox Code Playgroud)

在对方法中的返回进行编码时,我想在我的第一个订阅回调中接收下一个事件,所以我不能使用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({});
Run Code Online (Sandbox Code Playgroud)

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

mar*_*tin 6

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

您可以发出这样的值void

const s = new Subject<void>();
s.next();
s.next(void 0);
Run Code Online (Sandbox Code Playgroud)

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

source
  .pipe(
    mapTo(void 0),
  )
  ...
Run Code Online (Sandbox Code Playgroud)