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

TypeScript库项目中如何将类统一归至命名空间并调用?

实现TypeScript类统一归至同一命名空间的方案

步骤1:调整类文件的导出方式

无需在每个类文件中单独定义mylib命名空间,直接导出类即可,避免命名空间分散:

src/a/Foo.ts

export class Foo {}

src/b/Bar.ts

export class Bar {}

步骤2:在入口文件统一构建命名空间

修改src/index.ts,将所有类挂载到mylib命名空间下并导出:

import { Foo } from './a/Foo';
import { Bar } from './b/Bar';

// 定义统一的命名空间并导出
export namespace mylib {
  export const Foo = Foo;
  export const Bar = Bar;
}

步骤3:修正测试文件的调用方式

修复测试文件的语法错误,并通过导出的mylib命名空间访问类:

test/a/Foo.spec.ts

import { mylib } from "../src";

test("constructor", () => {
  const foo = new mylib.Foo();
  // 可添加断言验证实例有效性
  expect(foo).toBeInstanceOf(mylib.Foo);
});

test/b/Bar.spec.ts

import { mylib } from "../src";

test("constructor", () => {
  const bar = new mylib.Bar();
  expect(bar).toBeInstanceOf(mylib.Bar);
});

补充说明

原代码的问题在于每个类文件单独导出mylib命名空间,导致这些mylib是相互独立的模块导出,而非同一个聚合命名空间。通过入口文件统一聚合类并挂载到同一命名空间下,既符合现代TypeScript模块规范,又能实现你需要的mylib.Foo调用方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 20:33:21