可以从Typescript中的另一个类访问变量吗?

可以从Typescript中的另一个类访问变量吗?,typescript,lazy-loading,lazy-initialization,Typescript,Lazy Loading,Lazy Initialization,高级:我有一个类a,它有一个定义为let _somevar的变量。 我正在寻找从另一个类B为这个变量赋值的方法 细节更为复杂: 类A包含一个延迟加载某个模块的初始化方法,它有一个变量_somevar,该变量保存延迟加载的模块。类A还有一些公共方法,用于检查此变量是否为null,并相应地执行 现在,类B提供了一个初始化函数来同步/直接地、非延迟地加载模块。问题是类A中的公共方法现在无法运行,因为没有设置_somevar。所以我试图从类B设置它,这样类A中的公共方法仍然可以使用 我知道可以对这些类进

高级:我有一个类a,它有一个定义为let _somevar的变量。 我正在寻找从另一个类B为这个变量赋值的方法

细节更为复杂: 类A包含一个延迟加载某个模块的初始化方法,它有一个变量_somevar,该变量保存延迟加载的模块。类A还有一些公共方法,用于检查此变量是否为null,并相应地执行

现在,类B提供了一个初始化函数来同步/直接地、非延迟地加载模块。问题是类A中的公共方法现在无法运行,因为没有设置_somevar。所以我试图从类B设置它,这样类A中的公共方法仍然可以使用

我知道可以对这些类进行很多重构。但我并不拥有代码库,我正在尝试在这里进行最小的代码更改以使其工作

我很想听听你的建议。非常感谢。
不可能访问另一个类中的变量

您可以访问公共成员,例如属性和方法

如果扩展类,子类可以访问受保护的成员

这里有一些解决方案,其中两个将变量提升为属性。另一个没有

建造师 如果ClassA依赖于somevar的初始化,那么它可以通过在其构造函数中要求依赖项来显式显示依赖项。这样,您就不能在提供依赖项之前调用使用依赖项的方法

class Example {
    constructor(private somevar: SomeVar) {
    }


    myMethod() {
        this._somevar.doSomething();
    }
}
设置依赖项 如果您正在进行轻微的艰难更改以解决问题,则可以添加一个接受依赖项的方法:

setDependency(somevar: SomeVar) {
    this.somevar = somevar;
}
然后,可以在使用当前失败的方法之前调用此函数。然而,这是一种时间耦合形式。在调用myMethod之前需要调用setDependency

传递到方法 当依赖项未初始化时失败的方法可以更改为需要依赖项

例如,这:

myMethod() {
    this._somevar.doSomething();
}
变成这样:

myMethod(somevar: SomeVar) {
    somevar.doSomething();
}

不要描述你的代码。张贴它。