rxjs 7 更新 - 主题 - 预期 1 个参数,但得到 0 个

eko*_*eko 53 rxjs typescript angular

我将 rxjs 从版本 6.xx 更新到 7.xx,但出现以下错误:

src/app/app.component.ts 中出现错误 (12:19) 需要 1 个参数,但得到 0 个。

当尝试将next空值传递给Subject

destroy$ = new Subject();

constructor() {
  this.destroy$.next(); // <-- Expected 1 arguments, but got 0.
}
Run Code Online (Sandbox Code Playgroud)

错误堆栈闪电战

eko*_*eko 97

长话短说:

使用 显式指示类型void

new Subject<void>();
Run Code Online (Sandbox Code Playgroud)

或传递一个假值:

this.destroy$.next(true);
Run Code Online (Sandbox Code Playgroud)

Rxjs 7 变化

在检查了变更日志和关于这种情况的几个 github issues 后,

主题:解决主题构造函数错误地允许参数的问题 (#5476) (e1d35dc)

主题:无默认通用 (e678e81)

变更日志 7.0.0-beta.1从测试中删除空值的提交

在此输入图像描述

我意识到解决方案是要么提供一个值,要么简单地对 with 进行类型转换,Subject如果<void>destroy$ = new Subject<void>()想使用next空值。

  • 在我的例子中,传递假值是有效的,但类型转换并不能解决这个问题。 (2认同)