在编写自定义TypeScript定义文件时,发生错误“模块名称”在…下parsing为无types模块
我找不到TypeScript定义@type/{name}
为我的已安装的NodeJS包之一,所以我试图为它写一个d.ts
文件,并将文件放在{project root}\typings
文件夹中。 我是这样做的:
// My source code: index.ts import Helper from 'node-helper-lib'; // My definition: \typings\node-helper-lib.d.ts declare....(something else) declare module 'node-helper-lib' { class Helper { ... } export = Helper; }
但是,Visual Studio代码不断产生这个错误,并将红线放在declare module 'node-helper-lib'
:
[ts]扩充中的模块名称无效。 模块“node-helper-lib”parsing为“{project path} \ node_modules \ node-helper-lib \ index.js”中的无types模块,无法进行扩充。
这是不是合法的,因为图书馆是无types的,所以我应该被允许添加打字?
更新:
我在用:
- TypeScript:2.1.4
- Visual Studio代码:1.9.1
- 节点JS:6.9.4
- Windows 10 x64
经过一些尝试和错误之后,我发现augmentation
意味着“用其他模块声明在同一个文件中声明一个模块”。
因此,如果我们想为一个非types化的第三方JavaScript库编写定义文件,那么我们必须在该文件中只有一个declare module 'lib-name'
,并且“lib-name”必须与库名称完全匹配(可以在它的package.json,“name”属性)。
另一方面,如果一个第三方库已经包含了定义文件 .d.ts
,并且我们想扩展它的function,那么我们可以把这个附加定义放在我们创build的另一个文件中。 这被称为augmenting
。
例如:
// These module declarations are in same file, given that each of them already has their own definition file. declare module 'events' { // Extended functionality } declare module 'querystring' { // Extended functionality } declare module '...' { ... }
我在这里留下我的发现,以防有人有同样的问题。 如果我错过了什么,请纠正我。