我将 rxjs 从版本 6.x.x 更新到 7.x.x,但出现以下错误:
src/app/app.component.ts 中出现错误 (12:19)
预期有 1 个参数,但得到 0 个。
当试图next
一个空值Subject
destroy$ = new Subject();
constructor() {
this.destroy$.next(); // <-- Expected 1 arguments, but got 0.
}
错误堆栈闪电战 https://stackblitz.com/edit/angular-ivy-xhxbmy?file=src%2Fapp%2Fapp.component.ts
tl;dr:
要么明确指示类型void
:
new Subject<void>();
或传递一个假值:
this.destroy$.next(true);
Rxjs 7 变化
在检查了变更日志和关于这种情况的几个 github issues 后,
主题:解决主题构造函数错误地允许参数的问题 (#5476) (e1d35dc)
主题:无默认通用 (e678e81)
变更日志 7.0.0-beta.1 https://github.com/ReactiveX/rxjs/blob/master/CHANGELOG.md#700-beta1-2020-07-02 and 从测试中删除空值的提交 https://github.com/reactivex/rxjs/commit/e678e81ba80f5bcc27b0e956295ce2fc8dfe4576#diff-c876f4a80a0bc2ad8a1f2e5aff377f2bd024c32400f6967913bf41c532434391
我意识到解决方案是要么提供一个值,要么简单地类型转换Subject
with <void>
as in destroy$ = new Subject<void>()
如果你想next
它具有空值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)