我有一個回傳的函式,Observable<void>我需要它回傳一個立即發出并完成的 observable。通常我會使用of運算子來執行此操作,但它不適用于void.
我試過的東西不起作用:
return of(); // doesn't emit
return of({}); // TypeScript compilation error 'Type 'Observable<{}>' is not assignable to type 'Observable<void>'.'
我嘗試過的事情確實有效,但我不喜歡:
return of({}).map(() => {}); // does extra work just to avoid compiler error
return of({}) as unknown as Observable<void>; // yucky casting
return new Observable<void>(s => {s.next(); s.complete();}); // verbose
我目前正在使用最后一個,因為它無需額外作業即可作業,但我更喜歡of.
uj5u.com熱心網友回復:
簡短而簡單:of(null)或of(undefined)。
uj5u.com熱心網友回復:
您可以為 operator 設定泛型型別of:
return of<void>(undefined);
或者如果你不這樣做,做 IIFE,像這樣:
return of(((): void => {})());
uj5u.com熱心網友回復:
你可以退貨of(void 0)。
現場演示:https ://stackblitz.com/edit/rxjs-yn6dmr
uj5u.com熱心網友回復:
您還可以回傳EMPTY:
import { EMPTY, Observable } from "rxjs";
function test(): Observable<void> {
return EMPTY
}
test().subscribe(e => console.log("sub"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/468681.html
