如何在TypeScript中模仿C#项目结构?

3

C# 中,库的源代码被组织在编译成 DLL 的一个项目中。这个 DLL 的接口公开了一部分实现库的类和函数。对于库外的客户端不可见的对象被标记为 internal

我想知道 Typescript 中“DLL”的等效物会是什么样子。带有导入的 Typescript 文件是模块,并且只向导入文件暴露你想要的内容,使用 export。但是,我不知道有任何 Typescript 相当于 C# 的 internal

我能想到的最接近这个想法的近似方法是将 Typescript 项目编译并捆绑成单个 .js 文件,然后仅导出想要公开的库的部分——一种更高级别的导出。但是,你如何创建这样的项目/工作流程呢?

我已经搜索了很多关于这个主题的信息,但没有找到太多信息。也许我用错了词。也许我太像一个 C# 程序员了!


“internal”是JavaScript中难以复制的概念,因为理论上整个代码库可以被缩小成一个单一的文件,并且在TypeScript中你期望存在于C#中的边界类型没有自然对应物,特别是“internal”,“protected”和“protected internal”。在这种情况下,我会将未导出的模块视为“private”,而期望任何导出的内容都是公共API的一部分。 - David L
@DavidL 当你试图保持一个文件里只有一个类时,这是很困难的。当你的项目大小大于典型的Javascript库时,这就更加困难了。 - Craxal
我非常尊重您的意见,但是我通常会将我的TypeScript应用程序(以及AngularJS js应用程序)结构化为每个文件一个类/结构。通过export功能,仍然可以最小化公开的API。而且你总是可以更进一步。你可以将类分组到模块中,并通过这些模块导出仅公开API的子集,这使你获得了类似于dll的东西。 - David L
@DavidL 好的,这就是我在问题中最初考虑的——一个“主”模块,它导出公共API。这听起来是一个非常合理的方法。我假设,在这种情况下,文件实际上并没有捆绑在一起。因此,如果客户端真的想要使用一些内部功能,他们可以尝试这样做。我原本以为唯一防止这种情况发生的方法是将所有内容捆绑在一起。 - Craxal
1个回答

0

我不确定这怎么回答我的问题。我跟着链接走了,但我只得到了“编译你的Typescript并添加一个.d.ts”的信息。 - Craxal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接