我无法弄清楚导入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';
但显然这并不是很好。我想要的是一种只导入主模块文件中的任何导出的方法,但它似乎不可能。
答案 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.ts
或index.d.ts
文件。
答案 1 :(得分:0)
你应该使用"类型"财产而不是"主要"具有打字稿模块的属性。 How TypeScript resolves modules