2015-11-19 16 views
11

拡張ファイル(私はthisの入力を使用しています)からの宣言のインポートに問題があります。 exampleによると、私は自分のコードにこれを置く必要があります:私は、次のようにこれを実行しようとすると、宣言をインポートする際のTypeScriptの問題

import * as SockJS from 'sockjs-client'; 
import BaseEvent = __SockJSClient.BaseEvent; 
import SockJSClass = __SockJSClient.SockJSClass; 

はしかし、:

module Test { 
    import * as SockJS from 'sockjs-client'; 
    import BaseEvent = __SockJSClient.BaseEvent; 
    import SockJSClass = __SockJSClient.SockJSClass; 

    export class Example { 
     constructor() {...... 
}}} 

を私は、コンパイラから次のエラーを取得する:

error TS1147: Import declarations in a namespace cannot reference a module. 

何か間違っていますか?それともタイピング自体に問題はありますか?

おかげ

+1

あなたのimportステートメントを使用する必要がありますあなたは= /// <基準パス 'と' d.ts'ファイルを参照しました"./sockjs-client.d.ts" /> 'または共通の' tsd.d.ts'でモジュールのインポートを維持してください – Sami

+0

@Samiはい、私はしました... – uksz

答えて

2

uksz私は、これはtypescriptですモジュールのオプションの組み合わせによるものであると信じています。

クラスは内部モジュールを使用し、入力ファイルは外部モジュールを使用します。 他のJavaScriptでの作業ここでセクションをライブラリを参照してください:http://www.typescriptlang.org/docs/handbook/modules.html

+2

あなたはどのようにアイデアを持っていますか?修理する? – uksz

10

あなたはモジュールの外部

import * as SockJS from 'sockjs-client'; 
import BaseEvent = __SockJSClient.BaseEvent; 
import SockJSClass = __SockJSClient.SockJSClass; 

module Test { 
    export class Example { 
     constructor(){} 
    } 
} 
+7

私の名前空間の外に置くとすぐに、すべてが破損し始めます。私はそれが私のコードが外部モジュールとして登録されているし、他のサードパーティのライブラリを見ることができなくなっていると思います。それを修正するために私ができることはありますか?ありがとう –

+0

@AdamPlocher私は同じ問題があります。解決策は見つかりましたか? – romanoza

+0

@romanoza 'module'または' namespace'を使って停止しました。理由を覚えようとしている私の脳を苦しめていましたが、別の質問に書いた答えに出くわしました(私が忘れてしまったこのコメントの2日後)。このトピックを正確に扱っているようです:https://stackoverflow.com/a/43023392/730566 –

関連する問題