从下面的Java代码开始。什么是ParentClass.this.a的TypeScript等效项

class ParentClass{
  int a = 1;
  class ChildrenClass{
    int b = 2;
    void run(){
      this.b = ParentClass.this.a;
    }
  }
}


我的目标是在回调函数内部访问父变量。

最佳答案

在typescript / javascript中没有这样的概念。实际上,您不能仅在一个类(即嵌套类)中定义一个类,以上语法不是有效的打字稿。

最接近的方法是使用声明合并来合并名称空间和类,以在父类作用域中获取嵌套类,并在父类实例中进行传递:

class ParentClass {
    a = 1;
    childClass: ParentClass.ChildrenClass;
    constructor() {
        this.childClass = new ParentClass.ChildrenClass(this);
    }
}
namespace ParentClass {
    export class ChildrenClass {
        constructor(private parentClassThis: ParentClass){}
        b = 2;
        run(): void {
            this.b = this.parentClassThis.a;
        }
    }
}

10-08 04:01