我有一些类型定义想要转换为 npm 包,因为我在多个不相关的项目中使用它们。(我可能会称它为@dfoverdx/ts-magic
.)其中一些项目使用 3.x,一些使用 >=4.2,其中引入了元组类型中的前导和中间剩余元素。
是否可以编写多个仅使用在用户版本的 TypeScript 中工作的类型的声明文件?
我能想到的有四种方法可能会奏效,但我对实施的了解还不够,如果它们可能的话。
使用 中的
lib
值tsconfig.json
,用户可以指定要包含的 ts-magic 声明文件。然后每个声明文件可以使用三斜杠指令来引用以前版本的声明文件。我可以有多个依赖于以前的子包的子包。我宁愿不走这条路,特别是因为在 NPM 中没有嵌套作用域之类的东西,而且我不想使用与我的 GitHub 用户名不同的作用域,也不想在
@dfoverdx
作用域下维护多个单独的包.因此我们遇到了另一个问题:这些类型中的一些强类型全局对象方法,例如 Object.fromEntries(),以及在
declare global {}
环境上下文中声明的东西——据我所知——不能限于包含它是在声明文件中声明的。也就是说,如果我的项目的 index.ts 被导入@dfoverdx/ts-magic/3.8
,因为我正在导入@dfoverdx/ts-magic
,它将包含包的每个声明文件。package.json
使用中的一些魔法peerDependencies
或我不知道的其他属性。
我无法想象这不是以某种方式做到这一点的方法。想法正确吗?