可以从Typescript中的另一个类访问变量吗?
高级:我有一个类a,它有一个定义为let _somevar的变量。 我正在寻找从另一个类B为这个变量赋值的方法 细节更为复杂: 类A包含一个延迟加载某个模块的初始化方法,它有一个变量_somevar,该变量保存延迟加载的模块。类A还有一些公共方法,用于检查此变量是否为null,并相应地执行 现在,类B提供了一个初始化函数来同步/直接地、非延迟地加载模块。问题是类A中的公共方法现在无法运行,因为没有设置_somevar。所以我试图从类B设置它,这样类A中的公共方法仍然可以使用 我知道可以对这些类进行很多重构。但我并不拥有代码库,我正在尝试在这里进行最小的代码更改以使其工作 我很想听听你的建议。非常感谢。可以从Typescript中的另一个类访问变量吗?,typescript,lazy-loading,lazy-initialization,Typescript,Lazy Loading,Lazy Initialization,高级:我有一个类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();
}
不要描述你的代码。张贴它。