“导出为名称空间foo”的目的是什么?

Dan*_*San 5 typescript

我正在使用某些* .d.ts文件,并且在其中许多文件中看到以下两行:

//foo.d.ts
export = foo;
export as namespace foo;

declare var foo;

[...]
Run Code Online (Sandbox Code Playgroud)

我可以理解,在前一个(export = foo)中,oof是导出的东西。但是导出为名称空间foo的含义是什么?应该如何从外部消费或使用它?

对于反应环境声明文件,它说:

export = React;
export as namespace React;

declare namespace React {
[...]
Run Code Online (Sandbox Code Playgroud)

无法使用以下命令导出React命名空间:

导出声明名称空间React {[...]

Dav*_*rdi 6

这是我根据此文档所了解的内容:https : //www.typescriptlang.org/docs/handbook/modules.html#umd-modules

当您export as namespace React;在声明文件 (*.d.ts) 中写入时,您告诉它React可用于访问整个导出的内容作为脚本文件中的全局变量。

脚本文件是没有export或的打字稿文件import,因此它可以在例如<script src="yourFile.js">浏览器内部使用。

请注意,这仅在您还导出某些内容时才有效,在这种情况下export = React告诉导出命名空间。

export declare namespace React是不等价的,因为对于 commonJs 它不会作为default脚本导出,对于脚本文件它不起作用(不会将命名空间添加到全局变量)。

对于您自己的模块,如果您希望只使用commonjs我建议避免使用名称空间而只使用export ...或者export default ...如果您只有一个导出。

也可以看看: