Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript RXJS Observable枚举类型,类型“Observable”不可分配给类型“type”_Javascript_Typescript_Rxjs_Observable - Fatal编程技术网

Javascript RXJS Observable枚举类型,类型“Observable”不可分配给类型“type”

Javascript RXJS Observable枚举类型,类型“Observable”不可分配给类型“type”,javascript,typescript,rxjs,observable,Javascript,Typescript,Rxjs,Observable,我正试图观察溪流中发生的最新事件。每个事件可以是两种类型中的一种,由枚举表示。但是,我在以下示例中遇到编译错误: import { BehaviorSubject } from 'rxjs/Rx'; export enum FilterAction { RESET, UPDATE } export class FilterSomething { private _filterEvent: BehaviorSubject<FilterAction> = new Beha

我正试图观察溪流中发生的最新事件。每个事件可以是两种类型中的一种,由枚举表示。但是,我在以下示例中遇到编译错误:

import { BehaviorSubject } from 'rxjs/Rx';


export enum FilterAction {
  RESET, UPDATE
}

export class FilterSomething {

  private _filterEvent: BehaviorSubject<FilterAction> = new BehaviorSubject(FilterAction.RESET);

  get filterEvent() {
    return this._filterEvent.asObservable(); // <-- behave.ts(14,12): error TS2322: Type 'Observable<FilterAction>' is not assignable to type 'FilterAction'
  }


  set filterEvent(action: FilterAction){
    this._filterEvent.next(action);
  }
}

我怀疑这与枚举值有关,与FilterAction的实例相反。

问题在于getter的返回类型。getter和setter应该获取并返回相同类型的参数,在您的示例中,这是FilterAction。但是你的getter返回可见。只是不要使用getter,而是更改函数的名称。然后语言服务停止显示错误。在语言规范中:

如果两个访问器都包含类型批注,则指定的类型必须相同


您可以签出。

问题在于getter的返回类型。getter和setter应该获取并返回相同类型的参数,在您的示例中,这是FilterAction。但是你的getter返回可见。只是不要使用getter,而是更改函数的名称。然后语言服务停止显示错误。在语言规范中:

如果两个访问器都包含类型批注,则指定的类型必须相同


您可以检查。

哪一行是第14行?返回此。\u filterEvent.a可观察;哪一行是第14行?返回此。\u filterEvent.a可观察;
set filterEvent(filterAction: any) {
   this._filterEvent.next(filterAction);
}