我有一个类,我们称它为 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()
.
我知道我可以做到这一点,但我不能静态地使用CoolClass
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
变量,就像我现在的解决方案一样。有人有什么办法吗?如果需要的话,我可以把完整的代码贴出来,虽然我相信这和我想实现的模式无关。
我想我可能会声明它,设置它,然后导出它。
class CoolClass {
public static readonly something = 'cool';
public static readonly somethingelse = 12345;
public static doSetupStuff(): void {
console.log('yay!');
}
}
CoolClass.doSetupStuff();
export default CoolClass;
也就是说,有了 doSetupStuff
是公共的可能不太理想,除非它是为了被类的用户调用。如果它只对类的公共方面起作用,你可以隐藏这个函数。
class CoolClass {
public static readonly something = 'cool';
public static readonly somethingelse = 12345;
}
function doSetupStuff(): void {
console.log('yay!');
}
doSetupStuff();
export default CoolClass;
尽管如此,我还是想用一个单人函数来代替。
class CoolClass {
public readonly something = 'cool';
public readonly somethingelse = 12345;
constructor() {
console.log('yay!'); // Setup here...
}
}
export default new CoolClass();