11

私は自分が間違っていることを理解していません。VS2012でTypeScriptプロジェクトを作成し、「Physics」という名前のサブディレクトリに「Vector.ts」という名前のファイルを作成しました。

// Module
module Physics {

    // Class
    export class Vector {
        constructor(public x: number) { }
    }

}

また、次のapp.tsファイルがあります。

/// <reference path="Physics/Vector.ts" />

window.onload = () => {
    var vector = new Physics.Vector(6);
};

プロジェクトは正常にコンパイルされましたが、起動すると次の例外が発生します。

0x800a1391-JavaScriptランタイムエラー:「物理」が未定義です

何が間違っているのかわかりません...

ありがとう。

4

2 に答える 2

5

Require.JsなどのモジュールローダーでAMDスタイルのモジュールを使用している場合は、importステートメントが必要です。ここでスティーブの受け入れられた答えを参照してください:https ://stackoverflow.com/a/14919495/1014822 あなたのコードは次のようになります:

import Physics = module("Physics/Vector");

var vector = new Physics.Vector(6);

...そしてあなたはこれを必要としないでしょう:/// <reference path="Physics/Vector.ts" />

モジュールローダーを使用していない場合は、Vector.js出力ファイルをhtmlページのどこかに含め、アプリファイルの前にロードすることを確認する必要があります。この場合、/// <reference path="Physics/Vector.ts" />インテリセンスなどが機能するモジュールの場所をTSに指示するために使用します。

于 2013-03-16T16:40:21.920 に答える
1

完全を期すために、使用している場合は、 :Systemを使用します。import function

System.import("Physics/Vector");

あなたがこれをしているなら、あなたはAngular 2あなたの前にこれをしたいと思うでしょうbootstrap import

于 2016-01-09T08:08:38.497 に答える