将最新版本的 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 库一起使用的主要内容,如果未能解决你的问题,请参考以下文章

安装较旧的角度版本 5?

支持较旧的 iOS 版本

如何在现有较旧的 android 项目中使用最新 API 添加 Google Map?

是否可以将 VS2008 配置为使用较旧的 VC++ 编译器进行构建?

everspin最新1Gb容量扩大MRAM吸引力

如何下载较旧的 google play 服务?