这就是我组织 TypeScript 文件的方式:
MBZ (Folder)
Utilities.ts
Controls (Folder)
Designer.ts
Form.Ts
来自 C#,我的方法是根据文件夹结构创建命名空间。因此,MBZ 文件夹中的所有内容都将具有命名空间“MBZ”,而 Controls 文件夹中的所有内容将具有命名空间“MBZ.Controls”。这允许 Controls 文件夹中的所有内容隐式引用其任何先前文件夹中的任何内容。
因此,这是上述文件的示例:
实用程序.ts
namespace MBZ
{
export function ProcessSelection()
{
// A Common Utility available to anything in the MBZ.* namespace
}
}
设计师.ts
namespace MBZ.Controls
{
export module Designer
{
export function Initialize()
{
// Initialize Control
}
export function OnSubmit()
{
// Calls common utility
ProcessSelection();
}
}
}
表单.ts
namespace MBZ.Controls
{
export module Form
{
export function Initialize()
{
// Initialize Control
}
export function OnSubmit()
{
// Calls common utility
ProcessSelection();
}
}
}
问题
根据我所读到的所有内容,人们说模块是可行的方法,您应该在文件中显式导入所需的每个模块。这对我来说似乎很奇怪 - 使用上面的方法,你永远不必真正明确地引用任何东西,除非你指的是不同命名空间链中的东西(就像在 C# 中一样)。
所以我的问题是:上述方法有什么不好?
最佳答案
So my question is: what is so bad about the above approach?
因为C#有main
的概念。在 JavaScript/TypeScript 中不是这样。代码在解析时开始执行。因此,不使用模块意味着您的代码可能会以脆弱的方式中断。
更多
https://basarat.gitbooks.io/typescript/content/docs/tips/outFile.html
关于javascript - 了解 TypeScript 封装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39690405/