NodeJS 如何知道@types中的typescript类型定义是否与实际的包匹配

8yoxcaq7  于 2022-11-29  发布在  Node.js
关注(0)|答案(2)|浏览(241)

我在node.js项目中使用typescript已经有一段时间了,我知道对于许多npm包来说,有单独的@types包用于typescript类型定义。
我的问题是:当@types包和实际包是分开维护的时候,我怎么知道它们是最新的?
例如,有一个npm包better-sqlite3,没有类型脚本定义,然后有一个单独的类型定义包@types/better-sqlite3。包的用户如何知道类型与包的当前版本匹配?
在这个答案here中,它说“JS包的TypeScript类型是最好的,取决于社区对包的兴趣”。

whitzsjs

whitzsjs1#

1.如果软件包开发者自己维护定义,就没有@typesd.ts只是在软件包发行版中构建
1.如果有@types,您可以检查两个软件包的最后更新日期(@types在自述文件中有Last updated),@types在最后更新时可能是正确的。
1.如果@types已经过时了,你可以自己更新,甚至在@types上发布,这就是“TypeScript types for JS packages is best effort and depends on Community interest in the package”的意思

6yjfywim

6yjfywim2#

types包不应该单独维护,包的作者应该将相应的types包列为dependency,这意味着当你安装顶层包时,正确的typing版本应该会沿着。
参考:https://github.com/Microsoft/types-publisher/issues/81
编辑:正如@Gwydion在评论中指出的,有一些包是在原始包之外由社区维护的,一个很好的例子是:
https://www.npmjs.com/package/better-sqlite3
以下软件包似乎 * 很可能 * 是正确类型的软件包:
https://www.npmjs.com/package/@types/better-sqlite3
但是,这也不一定是显而易见的。如果有信号来验证这是正确的包,那就太好了。
下面是我所做的:
1.我访问了原始npm软件包页面,记下了存储库URL,该URL为:https://github.com/WiseLibs/better-sqlite3
1.我访问了类型包的存储库URL,即:https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/better-sqlite3(此URL列在类型包的npm页面的“详细信息”下)
1.打开位于此处的index.d.ts文件。在顶部列出:Project: https://github.com/JoshuaWise/better-sqlite3 .
注:https://github.com/JoshuaWise/better-sqlite3重定向到https://github.com/WiseLibs/better-sqlite3,这与我们在上面的#1中找到的内容相匹配。

相关问题