2012-11-06 24 views
9

我正在将很多代码转换为Typescript,但是想要在我应该使用某些东西的时候获得良好的处理。何时在TypeScript中使用类与模块?

现在我有在模块的一些大的命名空间:

(function (nameSpace) { 

    var privateVariables = ''; 

    function privateFunctions() { }   

    // Public methods 
    nameSpace.someMethodHere = function() { }; 

}(window.nameSpace = window.nameSpace || {})); 

我的问题是在打字稿,有没有我只是把它们转变成只类的任何区别/效益?或者它应该只是一个包含类(每个方法)的大模块?

module nameSpace { 

    export class someMethodHere { 
     // etc 
    } 

    // more classes (my methods) here ?? 
} 

- 或 -

class nameSpace { 

    someMethodHere() { 
     // code 
    } 
    // more prototyped methods here 
} 

或者我应该将它们设置在同一个模块的方式我现在有?我正在尝试,它只是不断给我错误,不知道我怎么做nameSpace.someMethodHere里面没有一个类的模块!

回答

8

这取决于。一个模块应该是一组离散的“事物”,而不仅仅是一堆杂乱无章的类,所以如果事情看起来像是在一起,就用一个模块对它们进行分组。我相信TypeScript团队正在等待人们在发布指南之前使用语言,但我想人们会发布一个模块,他们当前发布的脚本 - 所以jQuery将是一个模块,每个jQuery插件将是一个模块,一个测试框架将是一个模块,而一个AOP框架将是一个模块 - 例如。

+0

同意,他们都是相当连接。我想现在我想到了,我想知道......在一个类中的所有东西(所有的方法都是原型)还是一个模块都更有意义?我确实喜欢一个模块至少不需要实例化 –

+18

作为一个基准,如果你将要有多个实例与每个实例相关的数据,那么'class'就是要走的路。如果你只是将逻辑连接的无状态函数组合在一起,'module'就更合适。 –

+0

我100%同意@RyanCavanaugh那个。 – Fenton

6
  • 考虑使用模块作为Singleton(每个地方都可以访问的一个静态对象)的常用选项,其中常见用法是针对库。
  • 当您需要创建此类的多个实例或者您计划扩展此类时,请考虑使用类。

基本上模块很适合将所有代码打包到一个方便的全局对象中,而类可以很好地构造代码和数据表示。

相关问题