簡體   English   中英

如何導入在Typescript中具有Typescript主文件的npm模塊?

[英]How to import an npm module that has a Typescript main file in Typescript?

我無法弄清楚導入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';

但顯然這並不好。 我想要的是一種只導入主模塊文件中的任何導出的方法,但似乎不可能。

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文件。

您應該使用“types”屬性而不是使用typescript模塊的“main”屬性。 TypeScript如何解析模塊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM