2016-10-28 8 views
0

私は2つの異なるJavaライブラリの型をエクスポートする必要があるプロジェクトで作業します(私の理由があります)。別のグローバルモジュールの型を使用して同様のサブモジュールを使用

libName `-namespace1 `-Class1 // full class Name: (libName.namespace1.Class1) -Class2 // full class Name: (libName.namespace1.Class2) 他方:

org `-libName `namespace123 `-Class1 // full class Name: (org.libName.namespace123) `public method1(param0: libName.namespace1.Class1): void

base.d.ts:コンパイルしようとする。この場合

declare module libName { 
 
    export module namespace1 { 
 
    export class Class1 { 
 
     /* omitted for brevity */ 
 
    } 
 
    export class Class2 { 
 
     /* omitted for brevity */  
 
    } 
 
    } 
 
} 
 

 
declare module org { 
 
    export module libName { 
 
    export class Class1 { 
 
    public method1(param0: libName.namespace1.Class1): void 
 
    } 
 
    } 
 
}
、上記もたらします error TS2305: Module 'org.libName' has no exported member 'namespace1'にあるため、TSC assu私は同じモジュールで宣言されたモジュールを使用するつもりです。

この制限を回避する方法はありますか?ありがとう!

答えて

0

あなたは共通の親でそれらの両方をラップすることができます:私は `wrapper`部品なしで完全な修飾子を使用する必要があるとして、残念ながら行うことはできません

declare module wrapper { 
    export module libName { 
    export module namespace1 { 
     export class Class1 { 
     /* omitted for brevity */ 
     } 
     export class Class2 { 
     /* omitted for brevity */ 
     } 
    } 
    } 

    export module org { 
    export module libName { 
     export class Class1 { 
     public method1(param0: wrapper.libName.namespace1.Class1): void 
     } 
    } 
    } 
} 
+0

... – pkanev

+0

[OK]をクリックします。これはどこで実行されるのですか?ブラウザ用ですか?ノード? –

+0

これはV8の上で実行されますが、実際のネームスペースが無事になる前に、ユーザーが別のものを追加する必要があるラッパーです。 – pkanev

関連する問題