2016-11-25 3 views
0

typesjsセットアップでTypescriptを使用しているため、typescriptはAMDモジュールを使用するように構成されています。Typescript:エクスポートされたAMDクラスのタイプが見つかりません

私はクラスをエクスポートして別のクラスから使用しようとしています。ここにいくつかのコード例があります。

//file: ClassA.ts 
export = class ClassA { 
} 

//file: ClassB.ts 
import ClassA = require("ClassA") 

export = class ClassB { 
    constructor(classA: ClassA) { //ClassA is not found 
     // However this will work: 
     let c = new ClassA(); 
    } 
} 

コンパイル時に次のエラーが発生します。

ClassB.ts(4,25):エラーTS2304:名前 'ClassA'が見つかりません。

しかし、IntellisenseはClassAのインスタンス化でうまくいき、インスタンスに対して完全なインテリセンスを取得します。

ここで私は何が間違っていますか?

編集:ここに私のtsconfig.jsonあなたは、クラスをエクスポートおよびインポートするためのJavaScriptと活字体の構文を混合しているように見えます

{ 
    "compileOnSave": true, 
    "compilerOptions": { 
    "noImplicitAny": false, 
    "noEmitOnError": true, 
    "removeComments": false, 
    "sourceMap": true, 
    "target": "es5", 
    "module": "amd" 
    }, 
    "exclude": [ 
    "node_modules", 
    "wwwroot" 
    ] 
} 

答えて

1

です。
は、この構文を試してみてください:

ClassA.ts: 
export class ClassA { 
    print() { 
     console.log(`ClassA.print()`); 
    } 
} 

ClassB.ts: 
import {ClassA} from './ClassA'; 

class ClassB { 
    print() { 
     let a = new ClassA(); 
     a.print(); 
    } 
} 
+0

これが働いて、どうもありがとう! AMDモジュールでes6モジュール構文を使用できるかどうかはわかりませんでした。 – mode777

+0

TypeScriptが使用するモジュール構文はes6に基づいています。コンパイラは、tsconfig.jsonの設定に基づいて、AMDまたはcommonJs構文を生成します。 – blorkfish

関連する問題