如何获取特定版本的 Jquery(例如 3.2.1)的 TypeScript 定义文件?
Posted
技术标签:
【中文标题】如何获取特定版本的 Jquery(例如 3.2.1)的 TypeScript 定义文件?【英文标题】:How to get TypeScript definitions file for a particular version of Jquery, ex 3.2.1? 【发布时间】:2017-09-24 10:18:38 【问题描述】:我是 TypeScript 的新手,但仍在尝试弄明白。我有一个使用 jquery 3.2.1 版的示例 Visual Studio 项目,我想让 TypeScript 类型定义可用于我的项目。
从网上看来,这些类型定义的权威来源是https://github.com/DefinitelyTyped/DefinitelyTyped
在我阅读的那个页面上
npm 这是首选方法。这仅适用于 TypeScript 2.0+ 用户。例如: npm install --save-dev @types/node
看来我只需要输入npm install --save-dev @types/jquery
即可通过npm 下载jquery 类型定义文件。但是后来我问自己,嗯,我想知道如果每个人都输入相同的命令而不管 jquery 版本如何,类型定义文件将是什么版本的 jquery。所以我去npm site查看,奇怪的是它说
此包包含 jQuery 1.10.x / (http://jquery.com/) 的类型定义。
然而,最后一次更新是“最后一次更新:2017 年 3 月 11 日星期六 00:13:28 GMT”。
所以这看起来很奇怪,为什么最近更新了用于 jquery 1.10.x 的 npm 模块?为什么 npm 上最新版本的 jquery 类型 def 会用于这么旧版本的 jquery? 2.0 也许是 1.10.x?所以我猜也许这些类型的定义是最新最好的,而维护 npm 包的人只是没有更新摘要?但是我怎么能确认呢?我下载了该模块并试图从中辨别出类型 defs 的 jquery 版本,但无法确定。
所以这是我的问题。一个人如何获得特定版本的 Jquery(例如 3.2.1)的 TypeScript 定义文件?
【问题讨论】:
如果您打开the index.d.ts file on GitHub (the latest version),第一行会显示jQuery 1.10.x / 2.0.x 的类型定义。没有为更高版本创建类型。有关 jQuery 3 类型的讨论,请参阅 this issue on the DefinitelyTyped GitHub。 看到了,但类型 defs 可以同时用于 1.10.x 和 2.x 对我来说没有意义。 :-) 您指向 github 问题的链接提供了丰富的信息。如果您发表评论作为答案并指出 jquery 3.x 没有 typedef,我会接受。 【参考方案1】:您好,这有点晚了,但这是我在查看 index.d.ts 文件后发现的,第一行中的注释说明了兼容 JQuery 的版本。
npm install @types/jquery@1.x
将为您提供 JQuery 1.x 定义
npm install @types/jquery@2.x
将为您提供 JQuery 2.x 定义
npm install @types/jquery@3.x
将为您提供 JQuery 3.x 定义
【讨论】:
【参考方案2】:您可以使用以下两个命令之一打印特定 npm 包的所有版本:
npm view package-name versions
或
npm i package-name@whatever
(你会得到一个错误,但它会打印所有可用的版本)
然后只需通过运行安装特定版本:
npm i package-name@version
所以对于 jquery 类型,你会运行:
npm view @types/jquery versions
您会看到所有版本(当前最新的 2.0.41)。您安装特定版本:
npm install --save-dev @types/jquery@2.0.41
【讨论】:
这很酷,但没有任何方法可以知道 npm 包 @types/jquery@2.0.41 用于哪个版本的 jquery。 (叹气)【参考方案3】:您现在获得的类型是 jQuery 类型的最新版本。
1.10.x 和 2.0.x 之间没有太多变化,因此类型定义对两者都适用。
an issue on GitHub 有人在其中询问 jQuery 3.x 的新定义。不幸的是,没有人自愿为 jQuery 的更高版本添加类型定义,因此在有人这样做之前,它们将保留在旧版本中。
【讨论】:
以上是关于如何获取特定版本的 Jquery(例如 3.2.1)的 TypeScript 定义文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 jQuery 从子元素中获取数据以在 xml api 中查找其他子元素?