如何解决是否可以为不同版本的 TypeScript 使用不同的声明文件?
我有一些类型定义想要转换成 npm 包,因为我在多个不相关的项目中使用它们。 (我可能会称它为 @dfoverdx/ts-magic
。)其中一些项目使用 3.x,一些使用 >=4.2,其中引入了 leading and middle rest elements in tuple types。
是否可以编写多个仅使用在用户版本的 TypeScript 中工作的类型的声明文件?
我认为有四种方法可能有效,但如果可能的话,我还不太了解如何实施。
-
使用
tsconfig.json
中的lib
值,用户可以指定要包含的 ts-magic 声明文件。然后每个声明文件可以使用三斜杠指令来引用以前版本的声明文件。 -
我可以有多个依赖于先前子包的子包。我宁愿不走这条路,尤其是在 there is no such thing as a nested scope in NPM 之后,我不想使用与我的 GitHub 用户名不同的范围,也不想在
@dfoverdx
范围下维护多个单独的包。因此我们遇到了另一个问题:其中一些类型是强类型的全局对象方法 如 Object.fromEntries(), 以及在
declare global {}
环境上下文中声明的事物--as 据我所知——不能仅限于包含 声明文件。也就是说,如果我的项目的 index.ts 导入了@dfoverdx/ts-magic/3.8
,因为我完全导入了@dfoverdx/ts-magic
,它将包含包的每个声明文件。 -
使用
package.json
或其他一些我不知道的属性在peerDependencies
中的一些魔法。
我无法想象这不是以某种方式做到这一点的方法。想法正确吗?
解决方法
您可以在 package.json
文件中使用 typesVersions 属性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。