使用具有静态函数的类与模块有什么优势?

时间:2012-11-20 07:30:01

标签: javascript typescript

我想要一些建议。我正在使用typescript来创建对话框。一旦创建,他们会照顾好自己,因为他们有自己的提交按钮,并自己检查。

以下两种编码方式中的任何一种都有任何优点或缺点吗?到目前为止,我唯一能看到的是带导出的模块方法允许我隐藏一个函数并在我不导出它时将其设为私有。当我使用静态并尝试使用私有修饰符时,它会在intellisense中显示一个锁定图标,但仍允许我使用它。

module Dialog {
    export class Modal {
        static createAccessModal(link: Link) {
            createModal(link);
        }
        static createAdminModal(link: Link) {
            link.Modal.MaxHeight = 600;
            link.Modal.Width = false;
            createModal(link);
        }
        static private createModal(link: Link) {

            ...
        }
    }
}

或做:

module Dialog {
    export module Modal {
        export function createAccessModal(link: Link) {
            createModal(link);
        }
        export function createAdminModal(link: Link) {
            link.Modal.MaxHeight = 600;
            link.Modal.Width = false;
            createModal(link);
        }
        function createModal(link: Link) {

            ...
        }
    }
}

1 个答案:

答案 0 :(得分:2)

模块方法是您尝试实现的首选方法。

如果使用类形式,即使你永远不会新建对象实例,并且直接在不能真正私有的构造函数上添加成员(正如你所观察到的那样),你也可以有效地定义构造函数。

使用模块方法,您只需构建一个对象,而您不导出的成员将包含在设置对象的闭包中 - 为您提供真正的隐私。

查看两者效果的好方法是将每个代码粘贴到http://www.typescriptlang.org/Playground/并分析生成的代码。