我想从传统的 JS 迁移到 TypeScript,因为我喜欢类似 C# 的语法。我的问题是我不知道如何在 TypeScript 中声明静态类。
在 C# 中,我经常使用静态类来组织变量和方法,将它们放在一个命名类中,而无需实例化对象。在 vanilla JS 中,我曾经使用一个简单的 JS 对象来执行此操作:
var myStaticClass = {
property: 10,
method: function(){}
}
在 TypeScript 中,我宁愿采用我的 C-sharpy 方法,但似乎 TS 中不存在静态类。这个问题的适当解决方案是什么?
原文由 Rayjax 发布,翻译遵循 CC BY-SA 4.0 许可协议
TypeScript 不是 C#,所以你不应该期望 TypeScript 中的 C# 的相同概念。问题是你为什么想要静态类?
在 C# 中,静态类只是一个不能被子类化并且必须只包含静态方法的类。 C# 不允许在类之外定义函数。然而,在 TypeScript 中这是可能的。
如果您正在寻找将函数/方法放入命名空间(即非全局)的方法,您可以考虑使用 TypeScript 的模块,例如
这样你就可以在外部访问Mf(),但不能访问s,并且不能扩展模块。
有关更多详细信息,请参阅 TypeScript 规范。