如何在没有Typescript类型的情况下使用节点模块

时间:2017-04-20 20:29:36

标签: typescript typescript-typings

我试图通过以下方式从node_modules导入外部模块:

import { offline } from 'redux-offline';

来自档案/src/store/store.ts。但是,我收到以下错误:

  

找不到模块redux-offline

我已经读过我们可以声明一个模块,比如redux-offline.d.ts,我们定义了一个虚拟声明,然后我们可以从源代码中使用它。然而,我根本不明白:

  • 应该在哪个文件夹中定义该文件?
  • Typescript如何知道该模块正在声明外部模块的接口?

感谢您的帮助,了解它是如何运作的。

1 个答案:

答案 0 :(得分:8)

  

应该在哪个文件夹中定义该文件?

这些文件实际上可以在任何文件夹中声明,但最好将它们放在一起,在一个描述它们的目录中。在我们的项目中,我们有一个名为“ambient-types”的文件夹,其中有一个“external-modules”文件夹。

  

我读过我们可以声明一个模块,比如redux-offline.d.ts

你是对的,这将位于external-modules文件夹中。

  

Typescript如何知道该模块正在声明外部模块的接口?

在你的redux-offline.d.ts文件中,我们声明了所谓的环境声明,它看起来如下:

declare module 'redux-offline';

redux-offline现在可以从您自己的文件导入。

import { redux-offline } from 'redux-offline';

这基本上告诉Typescript,在运行时你会期望有一个名为redux-offline的文件/库可用。请注意,导入将具有“任何”类型。

  

环境声明是你正在做的承诺   编译器。如果这些在运行时不存在并且您尝试使用它们,   事情会在没有警告的情况下破裂。

有关详情,请参阅 - https://basarat.gitbooks.io/typescript/docs/types/ambient/d.ts.html https://www.typescriptlang.org/docs/handbook/modules.html

相关问题