【发布时间】:2020-08-24 04:59:59
【问题描述】:
我有一个类,我们称之为CoolClass,我在整个代码中都使用它来访问它的静态属性。但是,我在CoolClass 中有一个设置步骤,我将其定义为我的类的一部分;我们称之为doSetupStuff()。为了让它触发,我通过设置一个静态的dummy 变量来调用它。
这是我目前正在运行的解决方案:
export default class CoolClass {
public static readonly something = 'cool';
public static readonly somethingelse = 12345;
// GOAL: how can we call doSomeStuff() only once, without setting this 'dummy' variable?
public static readonly dummy = CoolClass.doSetupStuff();
public static doSetupStuff(): void {
console.log('doing setup...');
// more logic here...
}
}
但这对我来说感觉不正确,因为我实际上不需要 CoolClass.dummy - 我只需要运行 doSetupStuff() 中的内容。
我知道我能做到:
export default class CoolClass {
public static readonly something = 'cool';
public static readonly somethingelse = 12345;
constructor() {
this.doSetupStuff();
}
public doSetupStuff(): void {
console.log('doing setup...');
// more logic here...
}
}
但是我不能静态使用 CoolClass。 (即,每次我想在代码的其他部分使用它时,我都必须调用 new)。
当然没有必要像我当前的解决方案那样设置dummy 变量。有人有想法吗?如果需要,我可以发布完整的代码,但我认为这与我希望实现的模式无关。
【问题讨论】:
-
就
export default class A {...} A.setup(); -
我想知道一切都是静态的。你确定单例不会更合适吗?
标签: typescript class oop constructor static