TypeScript 2.0 简单
还应该提到 TypeScript 2.0,officially released in September 2016,在npm 中集成了一个更简单的解决方案(与 Typings 作者和 TSD 作者合作)。从本质上讲,您可以在其中获得作为 @types/packageName 的绝对类型包:
npm install --save packageName @types/packageName
同时还能够直接从 npm 包中自动获取类型。因此,您可以简单地使用package.json 和npm 直接管理您的类型定义。在这种情况下
npm update
将获得您最初要求的行为。
查看beta announcement blog post 和official Typescript documentation 了解更多信息。
@types 的重大更改不会触发警告
但是想指出,Typescript 团队的一名成员 (Ryan Cavanaugh) 在 TypeScript's Beta announcement 的评论部分提到,至少他所指的 Beta 的当前版本没有警告过时类型定义。即使对于 semver 主要更新。这意味着如果您想要 lodash 版本 4 的类型定义,而不是 lodash 版本 3,则不会出现警告。从而获得经历了重大更改的库的类型定义。只是可能要记住的事情(编辑:个人尚未确认最终 2.0 版本是否属于这种情况。)。
无更新命令
没有更新命令,有一个关于它的 issue on Typings,包含 unix 和 powershell 脚本,也可以自动进行某种更新。
具体安装命令
正如您在 CLI 选项中看到的那样,您可以使用特定源和 semver 范围更新特定包的类型定义。
如果源是绝对类型的,您可以在包前面加上 dt~。而如果你有 semver 版本^3.10.0,你可以进一步在包名后面加上@^3.10.0。
根据它是常规依赖还是开发依赖,您还可以分别添加--save 或--save-dev。虽然您还可以添加 --global 如果它是全局的此类依赖项。这应该在typings.json 文件中可读
要将您上面提到的 lodash 包更新为具有 semver 版本 ^3.10.0 的最新类型定义,您可以编写:
typings install dt~lodash@^3.10.0 --save
或
typings install dt~lodash@^3.10.0 --save --global
如果它是一个全局依赖项。
这将更新 typings.json 的哈希和日期,并为给定的 semver 范围安装最新定义。如果找不到更新,则文件没有更改。如果您打算自动执行此更新过程,您可以编写一个脚本来尝试执行这些更新。
注意事项
请注意,确定类型的类型定义不一定总是正确标记版本。可能完全缺乏标记版本或它们之间存在很大差距。例如,也可能是未标记的版本比最新的标记版本更新,Lodash 目前就是这种情况,绝对类型(2016 年 6 月 25 日)。
您可以通过以下方式轻松发现给定源的给定包存在哪些标记版本:
typings view <source>~<package> --versions
对于以“确定类型”为源的包 lodash,它将是:
typings view dt~lodash --versions
要查看可能更新的未标记版本,我认为您必须实际检查绝对类型存储库中的相应目录,它可能在在最新的提交中提到或在文件顶部说明。