2

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

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

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) {

            ...
        }
    }
}
4

1 回答 1

2

对于您要实现的目标,模块方法是首选。

如果使用类形式,您实际上是在定义一个构造函数,即使您永远不会新建对象实例,并且直接在构造函数上添加不能真正私有的成员(如您所见)。

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

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

于 2012-11-20T08:05:24.813 回答