angular - 类型 'Observable<unknown>' 不可分配给类型 'Observable<Lesson[]>'

标签 angular rxjs observable

我正在使用 Angular 8 应用程序。我正在使用 Observable 模式形式 rxjs。但是我仍然在 Observable 行上遇到错误。

当然是用谷歌搜索错误。但是没有找到正确的answare。

所以我导入了这个:

import { Subject, Observer, Observable } from 'rxjs';

我有这一行:

    public lessonList$: Observable<Lesson[]> = this.lessonListSubject.asObservable();

但我仍然得到这个错误:


Type 'Observable<unknown>' is not assignable to type 'Observable<Lesson[]>'.
  Type '{}' is missing the following properties from type 'Lesson[]': length, pop, push, concat, and 26 more.ts(2322)

错误会消失。

谢谢

好的,这是界面类(class):

export interface Lesson {
    id: number;
    description: string;
    duration?: string;
    completed?: boolean;

}

这是整个文件:

import * as _ from 'lodash';
import { Lesson } from '../shared/model/lesson';
import { Subject, Observer, Observable } from 'rxjs';


class DataStore {

    private lessons: Lesson[] = [];

    private lessonListSubject = new Subject();

    public lessonList$: Observable<Lesson[]> = this.lessonListSubject.asObservable();



    initaliseLessonList(newList: Lesson[]) {
        this.lessons = _.clone(newList);
        this.broadCast();


    }
    addLesson(newLesson: Lesson) {

        this.lessons.push(newLesson);
        this.broadCast();
    }

    deleteLesson(deleted: Lesson) {
        _.remove(this.lessons, lesson => lesson.id === deleted.id);
        this.broadCast();


    }

    toggleView(toggled: Lesson) {
        // tslint:disable-next-line: no-shadowed-variable
        const lesson = _.find(this.lessons, lesson => lesson.id === toggled.id);

        lesson.completed = !lesson.completed;
        this.broadCast();


    }

    broadCast() {
        this.lessonListSubject.next(_.cloneDeep(this.lessons));

    }
}

export const store = new DataStore();









最佳答案

替换

private lessonListSubject = new Subject();

private lessonListSubject = new Subject<Lesson[]>();

这样,你就有了一个Subject<Lesson[]>而不是 Subject<unknown> .

关于angular - 类型 'Observable<unknown>' 不可分配给类型 'Observable<Lesson[]>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57840507/

相关文章:

angular - ng 生成组件 "cannot read property ' 替换“未定义”

javascript - 嵌套页面上的 Angular 5 多个路由器导出

angular - 升级到 Angular 9 - @Angular/Flex-layout 对等依赖于 @Angular/cdk

node.js - 使用 rxjs 通过 nodejs request.get 发出批量请求

swift - 组合和可观察宏 iOS 17

android - 如何在 Android RxJava Observable 中顺序运行 2 个查询?

angular - 如何仅在满足条件时执行 rxjs 转换运算符

javascript - Angular2 - 当 innerHTML 改变时做一些事情

Javascript 可观察量 : need the functionality of a switchMap but with a slight difference

javascript - 如何在 angular2 中实现间隔/轮询以使用 Protractor ?