TypeScript:模块和具有静态成员的类有什么区别?

3

我正在学习TypeScript。

在查看模块后(https://www.typescriptlang.org/docs/handbook/modules.html),我问自己:“类和模块之间有什么区别?

两者都可用于在代码中结构化和封装数据/行为...

我搜索了一下,找到了这个资源,其中部分解释了它们之间的区别:https://msdn.microsoft.com/en-us/library/7825002w(v=vs.90).aspx

但是根据文章中所解释的深入思考:

如果我使用静态属性和方法创建一个类。那将与模块非常相似?还是我理解错了?

因此我的问题是:

模块和具有静态成员的类之间有什么区别(例如'Math')?


展示一些模块的例子。该模块会导出一些内容,可以是类、函数或常量。 - Max Koretskyi
有道理。谢谢提示。但我仍然看不出拥有模块的巨大好处。如果我在一个类上放置静态属性和方法,基本上我会达到相同的效果。 - cluster1
这与Java有关系吗? - VLAZ
已删除标签。 - cluster1
1个回答

3

模块可以帮助您组织和分离代码。根据模块类型的不同(对于外部/ES6模块为基于文件,对于内部模块为基于命名空间),可以跨多个文件展开。

使用模块而不是类有多种原因,例如打包和加载。此外,您无法在另一个类中声明一个类,因此除非您可以以一种足以封装整个功能的方式来构造代码,否则它们将无法替换一个模块。


好的。我认为我明白了:这是为了让我拥有一种语言结构,使我能够容纳一个完整的、复杂的功能(例如“mechanicsMath”)?虽然在一个类中涵盖这样一个复杂的部分是不可能或不可取的? - cluster1
1
@mizech 是的,但不仅如此。它也可以相反 - 比如说,你只想公开一个函数 - 为了一件事情而拥有一个_整个类_几乎是过度的。这甚至可能导致非常笨重的代码 - 比如说,你想通过一个模块公开三个不同的函数 - 如果它是一个类,你会把它们都放在一个地方,但你可能只对其中一个或两个感兴趣,而不需要第三个。因此,简而言之,它是关于将您的代码组织成可管理的块。 - VLAZ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接