Angular 11:订阅已弃用:使用观察者代替?

问题描述 投票:0回答:3

我的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)

那么我现在如何订阅内容?

angular typescript tslint
3个回答
17
投票

我刚刚在 VS Code 扩展选项卡上查找了 TSLint (v1.3.3)。它说:

❗重要提示:TSLint 已被弃用,取而代之的是 ESLint。

当我禁用 TSLint 并安装 ESLint 时,所有与订阅相关的警告都消失了。

干杯!


12
投票

回答您的问题“那么我现在如何订阅内容”: 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 天前修复,但我不确定它是否已在最新版本中:

https://github.com/microsoft/TypeScript/pull/43165


6
投票

最新版本支持以下结构:

myObservable.subscribe({
    next: (val) => { ... },
    error: (err) => { ... },
    complete: () => { ... }     
})
© www.soinside.com 2019 - 2024. All rights reserved.