如何导入在Typescript中具有Typescript主文件的npm模块?

时间:2018-03-16 12:20:44

标签: node.js typescript npm

我无法弄清楚导入Typescript npm模块的正确方法。

以下是我尝试做的事情:

module package.json

{
  "name": "my-module",
  "main": "src/myModule.ts"
}

module src / myModule.ts

export module MyModule {
  // Code inside
}

使用npm模块的代码

import { MyModule } from 'my-module'; // Doesn't work
import { MyModule } = require('my-module'); // Doesn't work.

该模块作为依赖项安装在package.json中,例如我可以

import { MyModule } from '../node_modules/my-module/src/myModule.ts';

但显然这并不是很好。我想要的是一种只导入主模块文件中的任何导出的方法,但它似乎不可能。

2 个答案:

答案 0 :(得分:6)

package.json中的'main'仅对webpack或angular-cli的构建工具等打包工具有用。它用于根据用户的需要选择不同的包:ES6,ES5,UMD ......

TypeScript忽略了这一点。您需要指定所需的文件,就像您引用自己的项目一样:

import { MyModule } from 'my-module/src/myModule';

像Angular这样的其他库是创建一个桶,一个通常称为'index.ts'或'index.d.ts'的文件,它可以导入和导出库中的所有类型。

这样做的好处是,如果你在my-module的根目录中创建一个index.d.ts文件:

export { MyModule } from './src/myModule';
// other exports

你可以这样做:

import {MyModule} from 'my-module'

作为打字稿,从文件夹导入时,会自动使用index.tsindex.d.ts文件。

答案 1 :(得分:0)

你应该使用"类型"财产而不是"主要"具有打字稿模块的属性。 How TypeScript resolves modules