我开始阅读DefinitelyTyped项目和发布npm包的声明文件文档。这两个来源都表明,“发布到npm上的@types组织”是非TypeScript项目的首选方法。
为什么比起通过
package.json
中的types
字段与库一起发布类型定义,这种方式更受欢迎?我真的不明白为什么要涉及第三方。这样更新类型定义和版本控制似乎更加复杂。以上引用来自上述文档(重点是我的):
来自DefinitelyTyped:
如果您是库的作者并且您的包是使用TypeScript编写的,请将自动生成的声明文件捆绑在您的包中,而不是发布到Definitely Typed。
来自typescriptlang.org:
现在你已经按照本指南的步骤编写了一个声明文件,是时候将其发布到npm上了。有两种主要的方法可以将你的声明文件发布到npm上: - 与你的npm包捆绑 - 发布到npm上的@types组织。
如果你的包是用TypeScript编写的,那么首选第一种方法。使用--declaration标志生成声明文件。这样,你的声明和JavaScript将始终保持同步。
如果你的包不是用TypeScript编写的,则第二种方法是首选。
if (isAuthor && lang === "typescript")
bundle();
else
publishOnDefinitelyTyped();