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