2016-12-19 4 views
2

別のモジュール内のオブジェクトのプロトタイプを修正しようとしています(hereと同様)。しかし、モジュール補強は、別のモジュールではなく同じモジュール内の必須ファイルで宣言されたオブジェクトを補強するときにのみ機能するように見えます。複数のモジュールにわたるTypeScriptモジュールの拡張

例えば、私はクラス、TestClassあります

// some-module/index.ts 

import { TestClass } from "./TestClass"; 

declare module "./TestClass" { 
    interface TestClass { 
     doSomethingElse(): void; 
    } 
} 

TestClass.prototype.doSomethingElse = function(): void { 
    console.log("Something else"); 
}; 

これは正常に動作します:

// some-module/TestClass.ts 

export class TestClass { 
    someValue: string = "hi"; 
    someFunc(): number { 
     return 5; 
    } 
} 

と同じモジュールでは、私はこれを持っています。しかし、TestClassを別のモジュール(test-module/TestClass.ts)に移動し、このようにコードを適切に変更すると、TestClassにアクセスするとエラー'TestClass' only refers to a type, but being used as a value here.が返されます。

// some-module/index.ts 

import { TestClass } from "test-project"; 

declare module "test-project" { 
    interface TestClass { 
     doSomethingElse(): void; 
    } 
} 

TestClass.prototype.doSomethingElse = function(): void { 
    console.log("Something else"); 
}; 

私はCommonJSでNodeJSモジュール解像度を使用しています。

ご協力いただければ幸いです。

+0

を参照して、インポート*の代わりに、あなたが必要とするだけのクラスとモジュール全体をインポートする必要があるためです; 'が表示されるはずです。それは "あなたが' 'TestClass'を別のモジュールに移動した後に実行しようとするコードですか?もしそうなら、 'test-module/TestClass'ではなく' test-project'をなぜインポートしますか?そうでない場合は、明確にしてください。 – Louis

+0

あなたの 'test-module/index.ts'について垣間見ることができますか? – rodrigogq

答えて

関連する問題