代码之家  ›  专栏  ›  技术社区  ›  dhilt

在BehaviorSubject实例化期间,TypeScript从不类型错误(Never[]不可赋值)

  •  3
  • dhilt  · 技术社区  · 6 年前

    在我的角度项目中,我试图初始化 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 回复  |  直到 6 年前
        1
  •  4
  •   Titian Cernicova-Dragomir    6 年前

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

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

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