在BehaviorSubject实例化期间,Typescript永不键入错误(never []不可分配)

时间:2018-08-21 11:46:41

标签: angular typescript rxjs

在Angular项目中,我尝试使用空数组初始化BehaviorSubject属性:

export class Buffer {

  $items: BehaviorSubject<Array<Item>>; // or <Item[]>
  private _items: Array<Item>; // or Item[]

  constructor(settings: Settings) {
    this.$items = new BehaviorSubject([]);
  }
}

打字稿编译器抛出以下错误:

  

错误TS2322:类型'BehaviorSubject<never[]>'无法分配给   输入“ BehaviorSubject<Item[]>

我试图阅读有关“从不”类型的信息,但我不明白为什么会出现这样的错误。同样,如果我将$items实例化为this.$items = new BehaviorSubject(new Array()),也不会出错。但是在这种情况下,我的IDE会警告我:“可以简化数组实例化。”

有什么问题,我应该在这里做什么?我正在使用打字稿2.7.2。

1 个答案:

答案 0 :(得分:5)

您需要将类型参数显式传递给构造函数

this.$items = new BehaviorSubject<Item[]>([]);

如果编译器没有其他信息,将[]推断为never[]