小编典典

TypeScript 静态类

all

我想从传统的 JS 迁移到 TypeScript,因为我喜欢类似 C# 的语法。我的问题是我不知道如何在 TypeScript 中声明静态类。

在 C# 中,我经常使用静态类来组织变量和方法,将它们放在一个命名类中,而无需实例化对象。在 vanilla JS 中,我曾经使用一个简单的 JS
对象来执行此操作:

var myStaticClass = {
    property: 10,
    method: function(){}
}

在 TypeScript 中,我宁愿采用我的 C-sharpy 方法,但似乎 TS 中不存在静态类。这个问题的适当解决方案是什么?


阅读 84

收藏
2022-07-17

共1个答案

小编典典

TypeScript 不是 C#,所以你不应该期望 TypeScript 中的 C# 的相同概念。问题是你为什么想要静态类?

在 C# 中,静态类只是一个不能被子类化并且必须只包含静态方法的类。C# 不允许在类之外定义函数。然而,在 TypeScript 中这是可能的。

如果您正在寻找一种将函数/方法放入命名空间(即非全局)的方法,您可以考虑使用 TypeScript 的模块,例如

module M {
    var s = "hello";
    export function f() {
        return s;
    }
}

这样就可以在外部访问Mf(),但不能访问s,并且不能扩展模块。

有关更多详细信息,请参阅
TypeScript规范

2022-07-17