我想要一些建议。我正在使用 typescript 来创建对话框。一旦创建,它们就会自行处理,因为它们有自己的提交按钮并进行自己的检查。
以下两种编码方式有什么优点或缺点吗?到目前为止,我唯一能看到的是,带有导出的模块方法允许我隐藏一个函数,并在不导出它的情况下将其设为私有(private)。当我使用 static 并尝试使用 private 修饰符时,它会在智能感知中显示一个锁定图标,但仍然允许我使用它。
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) {
...
}
}
}
最佳答案
模块方法是您想要实现的目标的首选。
如果使用类形式,即使您永远不会更新对象实例,您也可以有效地定义构造函数,并直接在不能真正私有(private)的构造函数上添加成员(正如您所观察到的)。
使用模块方法,您只需构造一个对象,并且您不导出的成员包含在设置该对象的闭包中 - 为您提供真正的隐私。
查看两者效果的一个好方法是将每个代码粘贴到 http://www.typescriptlang.org/Playground/ 并分析生成的代码。
关于javascript - 与模块相比,使用具有静态函数的类有什么优势吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13468451/