0

これはコンパイル時にエラーなしでビルドされますが、実行すると、net クラスを使用しようとすると ReferenceError が発生します。(ネットは定義されていません)

//chat.ts file
/// <reference path="../client/net.ts" />
class chat {
    constructor(public chatHub: any) {
       net.call(chatHub.server.getUsers());
    } 
}

//net.ts file
class net {
    public call(callback: () => any): any {
        //stuff here
        return callback();
    }
} 

私が試したこと:

  • net をモジュールに変換し、関数をエクスポートします。エクスポートを実行すると AMD モジュール変換がトリガーされ、チャット クラスにインポートする必要があるため機能しません。これにより、チャット クラスが AMD モジュールに変換され、chat.ts を参照するすべてのクラスの範囲外になります。AMD 運命のカスケード。
  • static、public、module、class、および export のすべての可能な順列を試しました。サイコロはありません。

私がしたいのは、チャット クラスからネット クラスのユーティリティ関数を使用することだけです。

4

1 に答える 1

0

net.js ファイルをページ (chat.js ファイルの上のどこかに) に追加したことを覚えていますか? TypeScript で参照するだけでは、読み込まれません。

AMD モジュール定義をrequire.jsなどのローダーと組み合わせて使用​​するか、必要なすべての .js ファイルが (一度に 1 つずつ、またはバンドルされて) ページに追加されていることを確認する必要があります。コメント参照が行うことは、型情報の場所をコンパイラに伝えることだけです。

于 2013-05-03T17:00:57.083 に答える