1

我有一些类型定义想要转换为 npm 包,因为我在多个不相关的项目中使用它们。(我可能会称它为@dfoverdx/ts-magic.)其中一些项目使用 3.x,一些使用 >=4.2,其中引入了元组类型中的前导和中间剩余元素。

是否可以编写多个仅使用在用户版本的 TypeScript 中工作的类型的声明文件?

我能想到的有四种方法可能会奏效,但我对实施的了解还不够,如果它们可能的话。

  1. 使用 中的libtsconfig.json,用户可以指定要包含的 ts-magic 声明文件。然后每个声明文件可以使用三斜杠指令来引用以前版本的声明文件。

  2. 我可以有多个依赖于以前的子包的子包。我宁愿不走这条路,特别是因为在 NPM 中没有嵌套作用域之类的东西,而且我不想使用与我的 GitHub 用户名不同的作用域,也不想在@dfoverdx作用域下维护多个单独的包.

    因此我们遇到了另一个问题:这些类型中的一些强类型全局对象方法,例如 Object.fromEntries(),以及在declare global {}环境上下文中声明的东西——据我所知——不能限于包含它是在声明文件中声明的。也就是说,如果我的项目的 index.ts 被导入@dfoverdx/ts-magic/3.8,因为我正在导入@dfoverdx/ts-magic,它将包含包的每个声明文件。

  3. package.json使用中的一些魔法peerDependencies或我不知道的其他属性。

  4. 某种三斜杠指令。我怀疑这不是办法

我无法想象这不是以某种方式做到这一点的方法。想法正确吗?

4

1 回答 1

2

您可以在文件中使用typesVersions属性。package.json

于 2021-07-15T17:19:03.647 回答