我正在处理一些软件包。他们导出类。一般概念是有一个定义数据存储区行为的核心包,然后是一个postgres包,它为postgres实现一个数据存储区,另一个使用redis存储区实现相同的事物,等等。避免赋值错误与依赖关系的最佳做法?
我的问题是在我的依赖关系树,因为基本的数据存储对rxjs的依赖,以及一些插件模块也参考rxjs的。所以:
+ node modules
+ -- core
+ rxjs 5.4.0
+ -- postgres
+ rxjs 5.4.1
除非核心和Postgres模块声明对完全相同相同版本rxjs的依赖,这两种不同的rxjs包不会得到重复数据删除。
它们实际上是相同的版本,但它们不是。我明白了。我可以在那里处理角落案件。问题是,我再也不能说
const pgstore: Store = new PostgresStore();
,因为我根本无法分配PostgresStore(在我的Postgres包装声明)到通用存储变量(在我的核心包申报),因为有两个不同的版本rxjs,因此Subject<string>
我在商店中存储为私有属性最终是两种不同类型的主题,并且这些不可交叉指派。 (例如,编译失败,因为“主题不能键入主题,有两个不同类型的名称存在,但它们是无关的。”)
我必须想象,这并不罕见。什么是最佳实践(构建依赖关系,依赖关系等)以避免这种挂断?它基本上导致了一个非常脆弱的安装,并且有一段时间,我不得不花费一个小时摆弄npm和我的package.json文件以正确地重复删除东西(这也会干扰我使用npm link
为本地开发依赖项的能力包,因为这使得重复更加困难)。
嗯,似乎至少有一部分答案是:不要使用私有/受保护的成员。他们最终将打字稿从结构改为主格打字(有效),这可以被看作是“正确但可怕”的行为。 – pfooti