在多租户项目中,租户可以具有不同的UI和功能。为此,有一个像这样的结构:

TenantA
  SiteHeader.ts (class named SiteHeader)
TenantB
  SiteHeader.ts (class named SiteHeader)
... 20 other tenants


在网页上,.js声明会动态(在服务器端)生成对正确租户的引用:

<script src="../{CurrentTenant}/SiteHeader.js"></script>


在同一页面上,Main.ts需要引用正确的SiteHeader。由于我不能(也不想)拥有import {SiteHeader} from 'TenantA/SiteHeader'import {SiteHeader} from 'TenantB/SiteHeader'以及其他20个,因此我被迫简单地将其声明为var,它指向由父页面加载的js:

declare var SiteHeader;


但是,这会导致每个SiteHeader.ts中的重复标识符错误。有时也会在Main.ts中。我可以下拉至命令行并手动编译每个SiteHeader.ts,但这很麻烦。

我该如何解决这种情况?

并不是很重要,尝试将TypeScript带入Visual Studio 2019中的老式WebForms项目。

最佳答案

您可以创建interface SiteHeader并让所有租户实施它。但是我不确定运行时如何将<script>标记与外部模块结合使用。您是否考虑过internal modules (namespaces)或使用dynamic import()(TypeScript应该支持)?

10-02 15:49