我正在使用一些 *.d.ts
文件,我在其中许多文件中看到以下两行:
//foo.d.ts
export = foo;
export as namespace foo;
declare var foo;
[...]
我可以理解,在前一个(export = foo
)中,foo
是导出的东西。但是 export as namespace foo
是什么意思呢?应该如何从外部消费或使用?
在 react 环境声明文件的情况下,它说:
export = React;
export as namespace React;
declare namespace React {
[...]
React 命名空间不能导出:
export declare namespace React { [...]
?
最佳答案
以下是我根据此文档了解到的内容:https://www.typescriptlang.org/docs/handbook/modules.html#umd-modules
当你写 export as namespace React;
在声明文件 ( *.d.ts
) 中你告诉 React
可用于访问整个导出的内容作为脚本文件中的全局变量。
脚本文件是没有export
的 typescript 文件或 import
, 因此它可以在 <script src="yourFile.js">
中使用在浏览器中。
请注意,这仅在您还导出某些内容时才有效,在本例中为 export = React
告诉导出命名空间。
export declare namespace React
不等价,因为对于 commonJs,它不会导出为 default
对于脚本文件,它不起作用(不将命名空间添加到全局变量)。
对于您自己的模块,如果您希望只使用 commonjs
我建议避免使用命名空间而只使用 export ...
或 export default ...
如果您只有一个导出。
另见:
关于typescript - "export as namespace foo"的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44554883/