编写自定义TypeScript定义文件时出现错误“模块'名称'在...处解析为无类型的模块”

hirikarate:

我找不到@type/{name}我已安装的NodeJS包之一的TypeScript定义,所以我尝试为其编写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 Code不断产生此错误,并将红线放在下面declare module 'node-helper-lib'

[ts]扩充中无效的模块名称。模块'node-helper-lib'解析为'{project path} \ node_modules \ node-helper-lib \ index.js'下的未类型化模块,无法对其进行扩充。

因为该库是无类型的,所以应该允许我在其中添加类型吗?

更新:

我在用:

  • 打字稿:2.1.4
  • Visual Studio程式码:1.9.1
  • 节点JS:6.9.4
  • Windows 10 x64
hirikarate:

经过一番尝试和错误,我发现这augmentation意味着“在与其他模块声明相同的文件中声明一个模块”。

因此,如果我们要为无类型的第三方JavaScript库编写定义文件,则该文件中必须只有一个declare module 'lib-name',并且'lib-name'必须与库名完全匹配(可以在其package.json中找到“名称”属性)。

另一方面,如果第三方库已经包含定义文件 .d.ts,并且我们想扩展其功能,则可以将其他定义放入我们创建的另一个文件中。这称为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 '...' { ... }

我将发现留在这里,以防万一有人有同样的问题。如果我错过了一些事情,请纠正我。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法将名称“ X”解析为(n)“类型定义”组件

ES2015模块语法优于自定义TypeScript模块和名称空间@ typescript-eslint / no-namespace

TypeScript 2:无类型npm模块的自定义键入

无类型npm模块的TypeScript自定义声明文件

定义类型和名称相同的模块时,类型或模块的定义重复

Odoo-自定义模块卸载时出现内部服务器错误

TypeScript:扩展模块时如何编写定义?

为自定义记录类型扩展“名称”

为使用模块名称空间的R Shiny Module编写自定义JavaScript的最佳方法是什么?

自定义模块模式的TypeScript类型定义

在ReasonML中为导入的模块使用自定义名称

pylint无法导入自定义模块和功能(模块中没有名称)

为导出单个功能的无类型模块定义类型

如何在TypeScript中为仅导出的模块定义名称

基于自定义对象属性过滤对象时出现“无效的属性名称”错误

在数据流上运行自定义模板时出现错误“无法解析文件”

React Native-使用我制作的自定义组件时出现错误(错误:undefined无法解析模块<MyModule>)

如何导入自定义py模块,然后在本地名称空间中重新定义它?

Python自定义包导入模块名称未在init上导入

扩充中的模块名称无效。模块“ chart.js”解析为“ /src/chart.js”中的无类型模块,无法对其进行扩充

git子模块中的自定义命令。<名称> .update

为自定义输出文件夹和exe名称自定义gradle脚本

使用自定义模块后,在所需文件中定义的子例程将分配给错误的名称空间

导入错误:无模块名称

Kurento:添加“属性”时自定义模块错误

错误:在 dask 中在自定义类的构造函数中传递客户端对象时,没有模块名称“自定义类”

spring boot多模块项目中出现“已经定义了具有该名称的bean”错误

编写自定义 Ansible 模块时类型 bool 的实现错误

TypeScript - 为自定义类名使用预定义的名称