【问题标题】:Using latest version of TypeScript Definition with older JavaScript libraries将最新版本的 TypeScript 定义与较旧的 JavaScript 库一起使用
【发布时间】:2015-10-21 14:04:30
【问题描述】:
【问题讨论】:
标签:
javascript
angularjs
typescript
nuget
【解决方案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:
这有点痛苦,因为我必须手动输入哈希值,但它确保我拥有所需的版本。