【发布时间】:2021-07-18 14:01:26
【问题描述】:
我意识到命名空间在 ES6 中基本上已被弃用,并且在 Visual Code 中效果不佳。
但我仍然想使用它们。为什么?因为我的代码分布在多个要分组的文件中,而不会在它们之间创建依赖关系。
这是用例。我在不同的文件中有两个不同的商店:
// fooStore.ts
class FooStore { numFoos = 0; }
export const fooStore = new FooStore();
和
// barStore.ts
class BarStore { numBars = 0; }
export const barStore = new BarStore();
为了便于发现,我想将这些商店组合在一起,以便开发人员可以参考stores.fooStore 和stores.barStore。
一种解决方案是导出一个包含两者的对象,如下所示:
export const stores = {
fooStore,
barStore
};
这可行,但它有一个很大的缺点。如果任何代码引用了stores.,那么所有引用的存储及其所有依赖项都会被拉入。为什么这是个问题?因为我在一个代码库中工作,该代码库是 AngularJS 类(遗留代码)和 React/MobX 代码(我们要移植到的)的组合,并且我们的一些商店使用 AngularJS。当我编写单元测试或 Storybook 故事时,我不想为我什至不感兴趣的商店设置所有必要的依赖项。
我真正想做的是这样的事情,但我知道不建议这样做。那我应该怎么做呢?
// fooStore.ts
class FooStore { numFoos = 0; }
namespace Stores {
export const fooStore = new FooStore();
}
【问题讨论】:
标签: typescript ecmascript-6 es6-modules javascript-namespaces