You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法导出嵌套命名空间?跨文件整合命名空间语法求助

解决TypeScript跨文件将命名空间合并到父命名空间的问题

你当前的写法存在语法错误,TypeScript不支持export namespace Foo = Foo;这种赋值式的命名空间声明,以下是两种可行的实现方式:

方法一:使用export import语法

这是TypeScript专门用于在命名空间内重新导出外部导入成员的语法:

// foo.ts
export namespace Foo {
  export const bar = "hello";
}

// main.ts
import { Foo as FooImport } from './foo';

export namespace Main {
  // 将导入的Foo重导出为Main的子命名空间
  export import Foo = FooImport;
}

使用示例:

import { Main } from './main';
console.log(Main.Foo.bar); // 输出 "hello"

方法二:直接在Main命名空间内重新导出

如果不想使用export import,也可以通过ES模块的导出语法直接将导入的成员挂载到Main命名空间下:

// foo.ts
export namespace Foo {
  export const bar = "hello";
}

// main.ts
import { Foo } from './foo';

export namespace Main {
  export { Foo };
}

这种方式同样支持通过Main.Foo访问原Foo命名空间的所有成员。

注意事项

  • 确保你的文件是TypeScript(.ts)格式,命名空间是TypeScript的专属特性,原生JavaScript(ES模块)更推荐直接使用export/import语法管理模块,而非命名空间。
  • 若项目基于ES模块规范开发,优先使用ES模块的导出导入逻辑,兼容性和生态支持会更好。

内容的提问来源于stack exchange,提问作者tosi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 11:55:22