如何解决Rxjs 6 中的类型“未知”Observable<Course[]> 上不存在属性“过滤器”
因为我正在尝试像这样使用过滤器。
beginnerCourses$: Observable<Course[]>;
advancedCourses$: Observable<Course[]>;
ngOnInit() {
const http$ = createHttpObservables('/api/courses');
const courses$ = http$.pipe(
map(res => Object.values(res["payload"]))
)
this.beginnerCourses$ = http$
.pipe(
map(courses => courses
.filter(course => course.category == 'BEGINNER')) //here problem is showing
);
this.advancedCourses$ = http$
.pipe(
map(courses => courses
.filter(course => course.category == 'ADVANCED')) //here problem is showing
);
courses$.subscribe(courses => {
this.beginnerCourses$ = courses.filter(course => course.category == 'BEGINNER'); //its working here
this.advancedCourses$ = courses.filter(course => course.category == 'ADVANCED'); //its working here
},noop,() => console.log('completed'));
}
的问题是Property 'filter' does not exist on type 'unknown'
map(courses => courses.filter(course => course.category == 'BEGINNER')))
和 map(courses => courses.filter(course => course.category == 'ADVANCED')))
当我参加一门课程时,它以这种方式显示,并且在他的教程中显示了它的工作原理。但我不知道我在这里错过了什么。
更新 1: 用过。
.pipe(
map((courses: any[]) => courses.filter(
course => course.category == 'BEGINNER')
)
);
但在 Edge Console 中它会显示。
ERROR TypeError: courses.filter is not a function
解决方法
这是一个打字稿错误,这意味着 map 不知道它正在转换的 observable 的类型。
您可以通过几种不同的方式为 typescript 提供输入信息。
试试:
.pipe(
map((courses: any[]) => courses.filter(
course => course.category == 'BEGINNER')
)
);
,
找到答案。
.pipe(
map(res => Object.values(res["payload"]))
)
从额外添加的课程 github 中引用它。
http$
带有Observable<Course[]>
。
它需要此 {{1}} 才能使用 filter。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。