我的tslint疯了?它会对我在整个应用程序中进行的每个订阅发出警告。不管我使用旧的还是新的语法,它仍然说 subscribe 已被弃用...如何编写一个不会被弃用的订阅?
这就是今天之前的情况:
something.subscribe((user: User) => {
this.userProviderService.setUserId(user.userId);
this.proceed = true;
});
我尝试了新语法,但没有做任何改变:
something.subscribe({
next: (user: User) => {
this.userProviderService.setUserId(user.userId);
this.proceed = true;
},
complete: () => {},
error: () => {}
});
这正是它所说的:
(方法)Observable.subscribe(下一个?:(值:对象)=> void, 错误?:(错误:任何)=>无效,完成?:()=>无效):订阅(+4 重载)@deprecated — 使用观察者而不是完整的 回调
@deprecated — 使用观察者而不是错误回调
@deprecated — 使用观察者而不是完整的回调
订阅已被弃用:使用观察者而不是完整的 回调(弃用)tslint(1)
那么我现在如何订阅内容?
我刚刚在 VS Code 扩展选项卡上查找了 TSLint (v1.3.3)。它说:
❗重要提示:TSLint 已被弃用,取而代之的是 ESLint。
当我禁用 TSLint 并安装 ESLint 时,所有与订阅相关的警告都消失了。
干杯!
回答您的问题“那么我现在如何订阅内容”: https://rxjs-dev.firebaseapp.com/guide/observer 就是这个。它很容易使用,与之前所做的非常相似,只是有一点小小的改变,它现在实际上接受一个带有 3 个键的对象(观察者):next、error、complete。
我们在工作中进行了与两天前相同的讨论,尽管您可以/应该使用观察者,但弃用似乎是一个误报。 (我们认为我们必须改变〜900个订阅者):
这是在 rxjs github 页面上创建的关于此问题的问题:https://github.com/ReactiveX/rxjs/issues/6060
开发人员在其中表示这是由于打字稿错误造成的:https://github.com/microsoft/TypeScript/issues/43053
此错误已在 3 天前修复,但我不确定它是否已在最新版本中:
最新版本支持以下结构:
myObservable.subscribe({
next: (val) => { ... },
error: (err) => { ... },
complete: () => { ... }
})