当使用.d.ts模式导入类型(import x = require('...'))文件时,当package.json时语义会发生变化
typings
使用条目。

例如,以下声明文件在否时成功导入
使用package.json typings条目,但生成错误TS2656
(Exported external package typings file is not a module)使用时
带有typings条目:

declare module 'mymodule' {
  export function myfunc(source: string): string;
}

而减去declare module {}的同一文件已成功导入
当与package.json typings条目一起使用但生成错误时
TS2307(Cannot find module)当不带typings条目使用时。
export function myfunc(source: string): string;

为什么要更改语义?

看起来,如果您使用新的npm键入功能,则必须
维护键入文件的npm版本和非npm版本。

我在尝试在
项目本身(TypeScript不在当前项目的
用于typings条目的package.json,似乎限制了它的搜索范围
./node_modules)。

使用TypeScript 1.7.5测试。

最佳答案

对于the documentation,package.json中的typings key 是main key 的类似物,它指向单个Node.js模块。因此,由d.ts指向的typings文件也应该是单个导出的模块声明,而不是d.ts包。
该文档给出的具体原理是:

(就您个人而言,我认为这种实现是完全错误和愚蠢的。typings键应该指向一个包含多个描述整个包的相对declare module './foo' { … }声明的文件,以此避免大量TypeScript-污染文件系统。不幸的是,这艘船已经航行了,所以您的程序包只需要与JavaScript模块并排放置大量特定于TypeScript的d.ts文件,以及此冗余的关于主模块类型的描述。)

10-06 04:04