在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。
答案 0 :(得分:5)
您需要将类型参数显式传递给构造函数
this.$items = new BehaviorSubject<Item[]>([]);
如果编译器没有其他信息,将[]
推断为never[]