node.js - 如何将 @types 的版本与 NodeJS Typescript 中关联包的版本相关联?

标签 node.js typescript typescript-typings

我正在使用 typescript 2.2 开发一个使用 node 6.3.1 的 nodejs 项目,我想从使用 typings 迁移到使用 @types。通过这样做,我遇到了一组与@types 文件的版本和相应的 npm 包之间是否存在关系相关的问题。

如果我以 jasmine 为例,类型定义的现有版本是

npm show @types/jasmine@* version
@types/jasmine@1.3.0 '1.3.0'
@types/jasmine@1.3.1 '1.3.1'
@types/jasmine@1.3.2 '1.3.2'
@types/jasmine@2.2.29 '2.2.29'
@types/jasmine@2.2.30 '2.2.30'
@types/jasmine@2.2.31 '2.2.31'
@types/jasmine@2.2.32 '2.2.32'
@types/jasmine@2.2.33 '2.2.33'
@types/jasmine@2.2.34 '2.2.34'
@types/jasmine@2.5.35 '2.5.35'
@types/jasmine@2.5.36 '2.5.36'
@types/jasmine@2.5.37 '2.5.37'
@types/jasmine@2.5.38 '2.5.38'
@types/jasmine@2.5.39 '2.5.39'
@types/jasmine@2.5.40 '2.5.40'
@types/jasmine@2.5.41 '2.5.41'
@types/jasmine@2.5.42 '2.5.42'
@types/jasmine@2.5.43 '2.5.43'
@types/jasmine@2.5.44 '2.5.44'
@types/jasmine@2.5.45 '2.5.45'
@types/jasmine@2.5.46 '2.5.46'

但是如果我检查我拥有的 jasmine 包的版本;

npm show jasmine@* version
jasmine@2.0.1 '2.0.1'
jasmine@2.1.0 '2.1.0'
jasmine@2.1.1 '2.1.1'
jasmine@2.2.0 '2.2.0'
jasmine@2.2.1 '2.2.1'
jasmine@2.3.0 '2.3.0'
jasmine@2.3.1 '2.3.1'
jasmine@2.3.2 '2.3.2'
jasmine@2.4.0 '2.4.0'
jasmine@2.4.1 '2.4.1'
jasmine@2.5.0 '2.5.0'
jasmine@2.5.1 '2.5.1'
jasmine@2.5.2 '2.5.2'
jasmine@2.5.3 '2.5.3'

假设我正在使用 2.4.0 版的 jasmine,我应该选择哪个版本的@types/jasmine?因为即使我使用两者的最新版本,2.5.46 与 2.5.3 也不匹配。

另一个例子是 node 本身,@types 中基本上有 6.0 或 7.0 版本,而 typings 只有下面显示的那些,6.0 被报告为过时的。那么,这些类型实际上与哪个版本的 Node 相关联?

typings view dt~node --versions
TAG                  VERSION DESCRIPTION COMPILER LOCATION
                          UPDATED
7.0.0+20170322231424 7.0.0                        github:DefinitelyTyped/DefinitelyTyped/node/index.d.ts#a4a912a0cd1849fa7df0e5d909c8625fba04e49d 2017-03-22T23:14:24.000Z
6.0.0+20161121110008 6.0.0                        github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts#fb7fbd28b477f5e239467e69397ed020d92817e7  2016-11-21T11:00:08.000Z

谢谢

最佳答案

DefinitelyTyped 包的主要和次要版本应该对应于它们所针对的包的主要和次要版本。每当 .d.ts 文件因其他原因发生更改时,补丁版本就会增加。因为次要版本不应代表重大更改,理论上,您可以使用可用于 2.a.b.c 库的最高 2.x.y 定义文件。

但现在警告开始了。

  • 定义文件中的 header 可能没有及时更改
  • 库作者不一定遵循 semver*
  • 定义文件在任何给定点上都可能不是 100% 正确(即在 2.5 版本下列出 2.6 功能,或未能在 2.5 文件中列出 2.4 功能)

* 事实上,没有人这样做


详细解释可以引用官方文档FAQ:
How do Definitely Typed package versions relate to versions of the corresponding library?

关于node.js - 如何将 @types 的版本与 NodeJS Typescript 中关联包的版本相关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51564577/

相关文章:

node.js - hasMany 关联上的多个外键 Sequelize

node.js - 使用 Express 进行外部获取请求

angular - 从 Angular 中的 .subscribe 获取订阅数据

javascript - Angular 5 : adding types to external JS file

javascript - 无法修改已提交 FireStore 的 WriteBatch

angular - NativeScript ng2 双向绑定(bind)在 TextField 上不起作用

javascript - 未捕获的异常发送统计信息

node.js - 无法解析模块 `perf_hooks`

Typescript:具有至少一个 T 类型属性的对象

node.js - 如何修复路由以在 node.js 的子文件夹中查找 View