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

dhi*_*ilt 3 rxjs typescript angular

在我的Angular项目中,我试图BehaviorSubject用一个空数组初始化属性:

export class Buffer {

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

  constructor(settings: Settings) {
    this.$items = new BehaviorSubject([]);
  }
}
Run Code Online (Sandbox Code Playgroud)

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

错误TS2322:类型' BehaviorSubject<never[]>'不能分配给类型' BehaviorSubject<Item[]>'

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

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

Tit*_*mir 7

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

this.$items = new BehaviorSubject<Item[]>([]);
Run Code Online (Sandbox Code Playgroud)

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