【问题标题】:How to relate a version of @types to the versions of the associated package in NodeJS Typescript?如何将 @types 的版本与 NodeJS Typescript 中关联包的版本相关联?
【发布时间】:2017-08-21 15:41:43
【问题描述】:

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

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

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 不匹配。

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

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

谢谢

【问题讨论】:

    标签: node.js typescript typescript-typings


    【解决方案1】:

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

    但现在开始注意事项了。

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

    *其实没有人这样做


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

    【讨论】:

    • Ryan 你的知识从何而来?你能提供阅读链接吗?我很难匹配一些库及其@types。这对我来说似乎是个大问题..
    • 我的知识来自我设计和实现@types
    • LOL :) 好的,有没有映射什么版本的@types 用于例如jQuery 1.4?是否有任何库/框架的指南?我正在寻找完全反映我正在使用的角度版本的 AngularJS @ 类型特定版本。与 ui-router (angular-ui-router) 相同
    • 我看到这个对话已经一年没有更新了,我刚刚问了一个类似的问题并将我的问题标记为这个问题的重复。您对@RyanCavanaugh 的回复是否有任何更新?或者这仍然是一个命中/未命中取决于类型包?
    • “因为次要版本不应该代表重大更改,理论上,您可以使用最高版本”......这并不完全正确,因为新类型可能包含 new 函数/等等。这是非破坏性的变化。您的类型应该与安装的版本相匹配。不幸的是,他们使用第 3 位作为类型更改指示器,而不是直接映射到该类型的确切版本,并使用 -type.x 或类似指示器来跟踪定义调整。
    猜你喜欢
    • 2017-12-04
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 2011-03-12
    相关资源
    最近更新 更多