Javascript 与模块相比,使用带有静态函数的类有什么优势吗?

Javascript 与模块相比,使用带有静态函数的类有什么优势吗?,javascript,typescript,Javascript,Typescript,我想要一些建议。我正在使用typescript创建对话框。一旦创建,他们会照顾自己,因为他们有自己的提交按钮,并进行自己的检查 以下两种编码方式有什么优点或缺点?到目前为止,我能看到的唯一一件事是,带有导出的模块方法允许我隐藏一个函数,如果我不导出它,则将其设置为私有。当我使用static并尝试使用private修饰符时,它会在intellisense中显示一个锁定图标,但仍然允许我使用它 module Dialog { export class Modal { stat

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

以下两种编码方式有什么优点或缺点?到目前为止,我能看到的唯一一件事是,带有导出的模块方法允许我隐藏一个函数,如果我不导出它,则将其设置为私有。当我使用static并尝试使用private修饰符时,它会在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) {

            ...
        }
    }
}

对于您想要实现的目标,最好采用模块方法

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

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


查看两者效果的一个好方法是将每个模块的代码粘贴到生成的代码中,并分析生成的代码。

我尝试用模块实现这一点,但当模块位于多个文件中时,我遇到了一个问题。每个模块中的每个函数都会放入每个.js文件中。你能看看我后面的问题吗?如果你能想出一个解决办法,请告诉我。