在2018年的Typescript中导入/要求没有@types的nodejs模块

时间:2018-01-12 10:59:39

标签: javascript node.js typescript import require

我有一个网站的打字稿nodejs项目。我需要使用此特定nodejs模块中提供的功能:https://www.npmjs.com/package/weather-js

此模块在其存储库中没有.d.ts文件,也没有“&types”中提供的文件。打字稿存储库。我不需要此模块的类型定义,但typescript不包含它并产生错误。

无论我尝试导入哪种方式,我都要

TS2304: Cannot find name 'require'.

在构建控制台中,或

TypeError: qs.escape is not a function

在浏览器开发控制台中。

StackOverflow上的许多回复都提出了需要2018年不再可用的存储库的解决方案,或者可能有用但仍然会产生错误的存储库

TypeError: qs.escape is not a function

2018年打字稿中使用/ import / require / consume nodejs模块功能(没有.d.ts定义)的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

您可以添加一个虚拟定义以允许它导入但不实际输入模块内容(尽管如果您应该完全键入它们并提交到DefinitlyTyped,那么每个人都可以从类型安全中受益!)< / p>

耐候js.d.ts

// declaring module will allow typescript to import the module
declare module 'weather-js' {
  // typing module default export as `any` will allow you to access its members without compiler warning
  var weatherJs: any; 
  export default weatherJs;
}

yourCode.ts

import weather from 'weather-js'

weather.find({search: 'San Francisco, CA', degreeType: 'F'}, () => {})