Typescript:如何声明默认导出也是 UMD 命名空间?

Jef*_*amp 6 typescript umd

在打字稿中,有这样的语法将模块的所有导出的“包”声明为 UMD 全局命名空间。来自文档:

export function isPrime(x: number): boolean;
export as namespace mathLib;
Run Code Online (Sandbox Code Playgroud)

这声明了一个 UMD 全局变量mathLib,作为该模块中所有“真实”导出的命名空间,因此我们可以编写以下内容:

<script>
    mathLib.isPrime(2);
</script>
Run Code Online (Sandbox Code Playgroud)

现在我有一个带有默认导出的入口模块,我希望默认导出是这个命名空间。但我似乎无法让它发挥作用。例如:

我的模块.d.ts

interface MyType {
    bar: number;
}

declare const Foo: MyType;
export default Foo;
Run Code Online (Sandbox Code Playgroud)

我想为此创建一个模块构建,以便它可以在其他模块环境中使用:

import Foo from 'my-module'

use(Foo.bar).someHow()
Run Code Online (Sandbox Code Playgroud)

...并且还希望此默认导出的类型是我可以指定名称的 UMD 全局类型Foo- 与默认导出的名称相同,以便在非模块脚本中使用我的模块的类型:

<script>
    use(Foo.bar).someHow() // exactly the same
</script>
Run Code Online (Sandbox Code Playgroud)

对于我的 UMD 捆绑包,我已经使用该设置配置了 webpack output.library.export = 'default',因此实际上创建了一个完美的捆绑包,使得如上所述的使用成为可能。但我无法弄清楚如何完成任何类型,因为如果我写:

  declare const Foo: MyType;
  export default Foo;
+ export as namespace Foo;
Run Code Online (Sandbox Code Playgroud)

如果我编写以下内容,我只会在 IDE 中获得类型补全:

<script>
    use(Foo.default.bar).someHow()
</script>
Run Code Online (Sandbox Code Playgroud)

从 TS 的角度来看,这确实有意义(毕竟,它为所有导出命名,包括默认导出),但显然是错误的且不受欢迎的。我找不到这方面的任何信息,这可能吗?