创建已弃用:改用新的 Observable() - 与管道和去抖时间一起使用



我已经升级了我的角度应用程序,tslint 给出了以下错误:

创建被弃用:改用新的 Observable((

它抱怨的代码:

this.subs$ = Observable.create((observer: any) => {
observer.next(this.edited.code);
}).pipe(
debounceTime(defaultInputDebounceTime),
mergeMap((searchTerm: string) => this.getStrings(searchTerm))
);

我尝试使用new Observable()形式,但随后它出现了去抖时间的问题。我在这里错过了什么?

this.subs$ = new Observable((observer: any) => {
observer.next(this.edited.code);
}).pipe(
debounceTime(defaultInputDebounceTime), // <- gives error
mergeMap((searchTerm: string) => this.getStrings(searchTerm))
);

错误 TS2345 (TS( 类型为"单类型操作员函数"的参数不可分配给参数 键入"运算符函数"。 类型"可观察"不可分配给类型"可观察"。 类型"未知"不可分配给类型"字符串"。

RXJS 6.5.2

更新

of()替换Observable.create()后,它仍然抱怨不兼容的类型:

TS2345 (TS( 类型"MonoTypeOperatorFunction"的参数不可分配给类型的参数 "运算符函数"。 类型 "可观察"不可分配给类型 "可观察"。 键入"字符串 |未定义"不能分配给类型"字符串"。 类型"未定义"不可分配给类型"字符串"。

我的变量类型是:

this.edited.code: string | undefined;
subs$: Observable<ListData[]> | undefined;

你最好只使用of()

of(this.edited.code).pipe(
debounceTime(defaultInputDebounceTime),
mergeMap((searchTerm: string) => this.getStrings(searchTerm))
);

您在 tsconfig.json 中使用了strict: true标志。这意味着它不喜欢你说searchTerm是 mergeMap 中的一个字符串,因为它也可以是未定义的。您可以更新of以反映此of(this.edited.code || ''),或更新 mergeMap 类型:mergeMap((searchTerm: string | undefined)

最新更新