2016-10-06 8 views
0

typescriptの相対的な名前空間はありますか?とき私は次のコードを試してみてください。typescriptの相対名前空間?

namespace a.b.c { 
    export function sayHello() { 
    b.g.h.sayHello(); 
    } 
} 

namespace b.g.h { 
    export function sayHello() { 
    console.log("Hello"); 
    } 
} 

a.b.c.sayHello(); 

「 'typeof b'の型に 'g'プロパティが存在しません」というエラーが表示されます。

「現在の」名前空間の「b」がルートであり子ではないという形容詞を言う方法はありますか?

THXあなたが行うことはできません

答えて

0

そのときa内部に、現在のスコープにあるのは、それがa.bを何あなたを与えるbにアクセスするため。
あなたがそれを行うための唯一の方法は、ウィンドウオブジェクトからルートbにアクセスすることです:

namespace a.b.c { 
    export function sayHello() { 
     window.b.g.h.sayHello(); 
    } 
} 

しかし、その後、あなたはまた、ウィンドウオブジェクトに定義を追加する必要があります:

interface Window { 
    b: { 
     g: { 
      h: { 
       sayHello(): void; 
      } 
     } 
    } 
} 

code in playground

別のオプションは、別の名前空間にbをラップすることです

code in playground

関連する問題