在DefinitelyTyped上的NodeJS定义中可能发生的重大更改

时间:2019-02-05 00:05:49

标签: typescript definitelytyped

https://github.com/DefinitelyTyped/DefinitelyTyped/pull/32567中,最近的更改之后,某些用户在引用使用TypeScript构建的库时会遇到编译时错误,该库引用了DefinitelyTyped上的NodeJS定义。图书馆作者可能会发现在他们的编译中声明文件输出的顶部现在缺少以下内容:

/// <reference types="node" />
...

这是由于声明文件的发出行为中的错误所致。我们最近将/// <reference path="" />标签所包含的NodeJS定义分成多个文件,以提高可维护性,并且对于支持NodeJS定义中较新的TypeScript语言功能而言,这是必需的。不幸的是,TypeScript对自动发出/// <reference types="" />标签的支持还不包括“环境模块”的路径引用。 fix现在在我们的master分支中可用,并将在我们的下一个每晚构建版本中使用。

同时,如果用户使用的TypeScript版本没有此修复程序,用户该怎么做才能解决此更改?

1 个答案:

答案 0 :(得分:2)

最终用户应用程序

通常,使用TypeScript构建最终用户应用程序的用户不应受到此更改的影响,因为它仅影响声明文件(.d.ts)的发出。如果您已经将@types/node软件包安装到项目的node_modules目录中,我们将自动为您选择模块声明。

如果您已在"types"中为项目显式设置了tsconfig.json条目,并且正在使用NodeJS或导出NodeJS类型声明中声明的类型的包,则应确保{{1 }}包含在默认使用的类型包列表中。

共享软件包

如果您是依赖于声明文件输出中的NodeJS类型声明的程序包作者,则更有可能受到此问题的影响。取决于您的软件包的下游软件包仅在以下情况之一时受影响:

  • 尚未安装"node"软件包作为开发依赖项。
  • 在他们的tsconfig.json中有一个@types/node条目,不包含"types"

这些消费者可以通过确保安装了"node"并且他们的@types/node(如果有)包含"types"来解决这些问题。他们还可以通过在编译器选项中指定"node"来解决此问题。