javascript - Angular:错误 TS2322:类型 'Observable<{}>' 不可分配...使用 share() 运算符

标签 javascript angular typescript observable observer-pattern

我是 Angular 5 的新手,我正在实现 Observable/Observer 模式,以便向订阅者共享一些事件和一些数据更改。

这里是代码片段:

...
@Injectable()
export class NidoService {
  ...
  event$: Observable<StrutturaDto[]>;
  private _observer: Observer<any>;

  event_dettaglio$: Observable<Struttura>;
  private _observer_dettaglio: Observer<any>;

  constructor() {
     this.event$ = new Observable(observer => this._observer = observer).share();
     this.event_dettaglio$ = new Observable(observer => this._observer_dettaglio = observer).share();
  }
  ...
}

当我尝试使用 ng build 构建应用程序时,我在构造函数中的两行代码上收到这些错误:

ERROR in src/app/services/nido.service.ts(28,7): error TS2322: Type 'Observable<{}>' is not assignable to type 'Observable<StrutturaDto[]>'.
Type '{}' is not assignable to type 'StrutturaDto[]'.
Property 'includes' is missing in type '{}'.
src/app/services/nido.service.ts(29,7): error TS2322: Type 'Observable<{}>' is not assignable to type 'Observable<Struttura>'.
Type '{}' is not assignable to type 'Struttura'.
Property 'idStruttura' is missing in type '{}'.

当我在开发模式下使用它时,我没有任何问题,但如果不修复它们,我就无法构建。如何更改这两行代码?

最佳答案

您需要指定可观察的类型:

this.event$ = new Observable<StrutturaDto[]>(observer => this._observer = observer).share();

this.event_dettaglio$ = new Observable<Struttura>(observer => this._observer_dettaglio = observer).share();

关于javascript - Angular:错误 TS2322:类型 'Observable<{}>' 不可分配...使用 share() 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50385654/

相关文章:

performance - Angular 性能 : component exposes public object with 500+ (sub-) members

http - 如何将 url 参数(查询字符串)传递给 Angular 上的 HTTP 请求?

javascript - jQuery 替换 mouseup 函数中的 href 属性

javascript - 背景图片有问题?

javascript - 我看不出这个 WinJS.xhr 调用出了什么问题

angular - generate命令需要在Angular项目中运行,但是找不到项目定义

javascript - 如何禁用自由格式用户输入仅允许下拉

angular - Subject 和 Observable,如何删除 item,filter() list 和 next()

javascript - typescript 中可以映射函数类型吗?

javascript - 带有 __underscores__ 的 typeorm 返回字段中的查找函数