我想定义一个返回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({});
我没有找到正式的方法,但也许有一个标准的解决方案......什么是最佳做法?
答案 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),
)
...