gpt4 book ai didi

javascript - 了解 TypeScript 封装

转载 作者:搜寻专家 更新时间:2023-10-30 21:12:41 24 4
gpt4 key购买 nike

这就是我组织 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com