何时在TypeScript中使用Classes vs Modules?

时间:2012-11-06 16:21:02

标签: typescript

我正在将大型代码库迁移到Typescript,但希望能够很好地处理何时&我应该在哪里使用某些东西。

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

(function (nameSpace) {

    var privateVariables = '';

    function privateFunctions () { }        

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

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

我的问题是在 TypeScript 中,在将这些变成只是类时,我有什么区别/好处吗?或者它应该只是一个包含类(每个方法)的大型模块吗?

module nameSpace {

    export class someMethodHere {
       // etc
    }

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

-OR -

class nameSpace {

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

或者我应该以我目前的模块方式设置它们?我正在尝试,它只是一直给我错误,不知道我如何在没有课程的情况下在模块内部nameSpace.someMethodHere做什么!

2 个答案:

答案 0 :(得分:11)

  • 考虑将模块用作Singleton(一个可随处访问的静态对象)的良好选项,其中常见的用途是库。
  • 当您需要创建此类的多个实例或计划扩展此类时,请考虑使用类。

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

答案 1 :(得分:8)

这取决于。一个模块应该是一组离散的“事物”,而不仅仅是一个混乱的不同类的集合,所以如果它们看起来像是在一起,那么使用一个模块对它们进行分组。

我相信TypeScript团队正在等待人们在发布指南之前如何使用该语言,但我想人们会发布一个他们当前发布脚本的模块 - 所以jQuery将是一个模块,每个jQuery插件都是一个模块,测试框架将是一个模块,而AOP框架将是一个模块 - 例如。