node.js - 在编写自定义 TypeScript 定义文件时出现错误 "Module ' name'resolves to an untyped module at..."

标签 node.js typescript typescript-typings typescript2.1

我找不到我安装的 NodeJS 包之一的 TypeScript 定义 @type/{name},所以我尝试为它编写一个 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] Invalid module name in augmentation. Module 'node-helper-lib' resolves to an untyped module at '{project path}\node_modules\node-helper-lib\index.js', which cannot be augmented.

因为库是无类型的,所以我应该被允许添加类型,这不是合法的吗?

更新:

我正在使用:

  • TypeScript:2.1.4
  • Visual Studio 代码:1.9.1
  • Node JS:6.9.4
  • Windows 10 x64

最佳答案

@Paleo 在@hirikarate 的回答中的评论中给出了实际的解决方案:

应在模块声明声明导入。

例子:

declare module 'node-helper-lib' {
   import * as SomeThirdParty from 'node-helper-lib';
   interface Helper {
       new(opt: SomeThirdParty.Options): SomeThirdParty.Type
   }
   export = Helper;
}

关于node.js - 在编写自定义 TypeScript 定义文件时出现错误 "Module ' name'resolves to an untyped module at...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42388217/

相关文章:

html - 头部如何向左显示

typescript - 在 TypeScript 中使用递归类型和映射类型触发过多属性警告

javascript - Kue作业完成后执行回调

node.js - Mongodb 从集合中选择随机查询,除了少数 id

typescript - 为什么我不能从已经省略的类型中省略属性?

通用的 typescript 两层联合类型推断

TypeScript:读取对象中值的通用类型

node.js - 可靠地确定使用什么 shell(cmd、bash 等)来运行 node.js 脚本

node.js - 如何使用 Elastic Beanstalk 设置 AWS CDK 的环境变量?

javascript - 合并两个 json 数组