2016-03-21 7 views
0

最初のプロジェクト、Typescript newbie。私は注意深くハンドブックを読むが、簡単な問題を解決することはできない。私は、内部モジュールを持っている:参照ファイルに書き込まれたときに内部モジュールを認識できません。

this.store = MDVault1Encoding.decode(container.data, this.pwHash); 

モジュール定義およびクライアントコードが住ん:次に

module MDVault1Encoding { 
    export function encode(store:Store, pwHash: Buffer): string { 
     (...) 
     return (...); 
    } 

    export function decode(encoded:string, pwHash: Buffer): Store { 
     (...) 
     return (...); 
    } 
} 

私は、インスタンスメソッドのように、これらの関数を呼び出して、このモジュールの外部クライアントコードを持っています同じ.tsファイル、すべてうまくいく。

しかし、モジュールをmd_vault_1_encoding.tsファイルに入れ、クライアントコードをfileio.tsにして、/// <reference path="./md_vault_1_encoding.ts" />を後者のヘッダーに追加すると、問題が発生します。

md_vault_1_encoding.tsはきちんとコンパイルしますが、fileio.tsはこれを得られます。私は間違って

$ tsc fileio.ts 
fileio.ts(39,26): error TS2304: Cannot find name 'MDVault1Encoding'. 
fileio.ts(48,19): error TS2304: Cannot find name 'MDVault1Encoding'. 

何をしているのですか?

答えて

1

md_vault_1_encoding.tsには、最上位のimportまたはexportという宣言があります。

ファイルがモジュール(別名「外部モジュール」)になり、ファイルがグローバル名前空間にプロパティを入れないことを意味します。

あなたはimport/exportその宣言(おそらくいない可能性)を削除するか、またはあなたの名前空間にexport修飾子を追加することができます(export module MDVault1Encoding { ...)、その後fileio.tsそれは確かだった書き込み

import { MDVault1Encoding } from './md_vault_1_encoding'; 
+0

、および外部で'md_vault_1_encoding.ts'にインポートしてください。ありがとうございました。したがって、ここでのルールは、ファイル内の外部インポートによって、外部モジュールに宣言されているモジュールがすべて呼び出されます。 –

+1

それは正しいです。 –

関連する問題