网站搜索

typescript - 类 'X' 在声明之前被使用


我有两个类 X 和 Y。由于某种原因,这两个类在同一个文件中,如下所示:

export abstract class Y {
  static readonly childVar = new X();
}

export class X extends Y {

}

创建这个新对象时发生错误,提示类 X 在声明之前被使用。有解决方法吗?

答案#1

这种循环引用通常是不好的设计,我更倾向于推荐一种替代方案,但我需要查看更多你的代码。如果你确实必须这样做,那么你可以通过 getter 延迟构造:

export abstract class Y {
  private static _childVar: Y
  static get childVar () { 
    return this._childVar || (this._childVar = new X())
  }
}

export class X extends Y {

}

只要你不在 X 被定义之前尝试访问 childVar,这就会有效。