如何获取特定版本的 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 定义文件?的主要内容,如果未能解决你的问题,请参考以下文章

从html标签jquery获取特定文本[重复]

jquery - 检查元素的类型

如何使用 jQuery 从子元素中获取数据以在 xml api 中查找其他子元素?

如何在jQuery中获取具有特定数据ID的特定div [重复]

如何在jQuery中获取对具有特定值的表行的引用

如何使用jquery获取单击按钮的特定值