将最新版本的 TypeScript 定义与较旧的 JavaScript 库一起使用
Posted
技术标签:
【中文标题】将最新版本的 TypeScript 定义与较旧的 JavaScript 库一起使用【英文标题】:Using latest version of TypeScript Definition with older JavaScript libraries 【发布时间】:2015-10-21 14:04:30 【问题描述】:我正在使用旧版本的 AngularJS - v1.3。查找相应的类型脚本定义文件。
最新的类型脚本定义是否与旧的库兼容 版本?
https://www.nuget.org/packages/angularjs.TypeScript.DefinitelyTyped/
很难找到 Angular JS 类型脚本定义文件版本和 Angular JS 库版本之间的映射。我们可以继续使用最新版本的打字稿定义吗?
编辑:我不得不比较两个 nuget 存储库并获取一个版本,其中 angular.d.ts 注释从 // Angular JS 1.3+ 的类型定义更改为 // Angular JS 1.4+ 的类型定义
【问题讨论】:
【参考方案1】:通常您可以通过使用tsd 运行以下命令来搜索以前版本的定义:
tsd query angular -v all
然后安装您想要的特定版本(例如tsd install angular -v 1.0.0
)。
不过还是有问题。出于某种原因,似乎只有两个其他版本的 angular 可用:
- angularjs / angular
- angularjs / angular-v1.0.0
- angularjs / angular-v1.2.0
出于这个原因,我建议查看angular.d.ts
的commit history 并找到它从1.3 切换到1.4 之前的最后一个定义文件。了解 Angular 1.4 的发布时间会有所帮助。
通过这样做,您将找到 1.3 的 this definition file。
【讨论】:
【参考方案2】:使用ref
属性指定确切的类型定义文件版本,对应git上的分支。在您的情况下,您可以使用以下步骤。
使用添加所需的tsd
依赖项
tsd install angular --save
保存步骤将创建一个具有以下结构的tsd.json
文件:
"version": "v4",
"repo": "borisyankov/DefinitelyTyped",
"ref": "master",
"path": "typings",
"bundle": "typings/tsd.d.ts",
"installed":
"angularjs/angular.d.ts":
"commit": "77ec1408257c677f8fd8d6798ebaf6bd87c11b9d"
将ref
属性更新为所需的angular type definition
版本。在您的情况下,很可能应该是1.3.0
再次运行tsd install
以下载所需的类型定义
【讨论】:
【参考方案3】:我所做的有点像走很长的路,并不完全是你的场景,但它对我有用,希望像我这种情况的人能来到这里......
在我的场景中,我将 NuGet 作为打字稿定义管理器并将其替换为 tsd,我需要特定版本的 lodash 打字稿定义 (0.4.1),但 tsd 正在安装最新版本。由于安装时不支持 bower 的版本控制方式,并且 tsd 使用提交哈希来跟踪您使用的版本,因此我使用 nuget 找到了我想要的版本:
然后将tsd.json
中的“commit”哈希替换为描述中列出的 git commit:
这有点痛苦,因为我必须手动输入哈希值,但它确保我拥有所需的版本。
【讨论】:
以上是关于将最新版本的 TypeScript 定义与较旧的 JavaScript 库一起使用的主要内容,如果未能解决你的问题,请参考以下文章
如何在现有较旧的 android 项目中使用最新 API 添加 Google Map?