我需要一些指導來正確開發可重用的commonjs庫(npm包)。 可以說庫的結構如下:Commonjs庫的index.ts作爲外部模塊
—lib
——Helper.ts
——Serialization.ts
——meta
——— Entity.ts
—index.ts
依此類推。每個文件都是外部模塊。
現在我需要創建入口文件(比如說index.ts),它將公開庫的功能並作爲入口點。 在這裏,我無法將自己的頭圍繞在創建它的方式上。我想保持嵌套結構,而不通過導出一切壓扁它:
export * from './lib/Helper’;
export * from './lib/Serialization’;
export * from './lib/meta/Entity’;
…
因爲這將刪除邏輯分組,並可以在將來導致可能的名稱衝突
我也曾嘗試進行索引。 TS是這樣的:
import {Helper} from './lib/Helper';
import * as Serialization from './lib/Serialization';
import * as Decorators from './lib/meta/Decorators';
let core = {
Helper: Helper,
Serialization: Serialization,
Meta: {
Entity: Entity,
}
}
export default core;
它完美的作品,直到我來消耗進口類型是這樣的:
import Core from ’nameOfTheNpmPackage';
let Entity = Core.Meta.Entity;
function f(e: Entity)//<—This produce error cannot find name ‘Entity'
{
}
,因爲它們不是在類型聲明空間(有沒有複製他們,如果他們不是在命名空間的方式?)
我曾嘗試是產生單d.ts文件全庫的另一種選擇使用outFile + amd。但該文件不是外部模塊。
所以我的問題是 - 如何寫index.ts,以便它將是外部模塊,並導出由庫公開的所有功能。
在此先感謝。