2017-10-31 13 views
0

私はstoreという名前のクラスとstoreという名前空間を持っています。 mynamespace.modal.storeクラスからmynamespace.store.makeRequestyにアクセスしようとすると、TypeScriptはそれを見つけることができません。クラスの代わりに名前空間にアクセスするには?

A.ts

namespace mynamespace.modal { 
    export class store() { 
     public constructor() { 
      store.makeRequest() 
     } 
    } 
} 

B.ts

namespace mynamespace.store { 
    export function makeRequest() { 
     // Makes an http request 
    } 
} 

Property 'makeRequest' does not exist on type 'typeof store'.

私はmynamespace.store.makeRequest()のようにそれを呼び出してみましたが、その後、私は次のエラーを取得する:

Property 'store' does not exist on type 'typeof mynamespace'.

私はstore namespaceにアクセスするのにどのような方法がありますが、store classにはアクセスできませんか?

編集

私は窓に名前空間を取り付けてみました:

interface Window { 
    mynamespace: mynamespace 
} 

はしかし、私は次のエラーを取得する:

[ts] Cannot find name 'mynamespace'.
[ts] Property 'mynamespace' of exported interface has or is using private name 'mynamespace'.

答えて

0

はこれを試してみてください。

A .ts

namespace mynamespace.modal { 
    export class store { 
     public constructor() { 
     mynamespace.store.makeRequest() 
     } 
    } 
} 

B.ts

namespace mynamespace { 
    export namespace store { 
    export function makeRequest() { 
     // Makes an http request 
    } 
    } 
} 
+0

まだ上記されているエラーのと同じように動作します –

+0

あなたはまだですか? 'Window'インタフェース拡張を削除してみてください。不要です。また、どのバージョンのTSを使用していますか? –

+0

問題は、名前空間と同じ名前のクラスがあったため、 'name.name'という名前が混乱していたためです。私はクラスを改名し、それは動作します。 –

0

は、エイリアスを作成するimportを使用し、名前の競合を避ける:

namespace mynamespace.store { 
    export function makeRequest() { 
     // Makes an http request 
    } 
} 

namespace mynamespace.modal { 
    import makeRequest = mynamespace.store.makeRequest; 
    export class store { 
     public constructor() { 
      makeRequest(); 
     } 
    } 
} 
関連する問題