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

如果您将 AMD 样式的模块与 Require.Js 等模块加载器一起使用,则需要导入语句。在此处查看史蒂夫接受的答案: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 回答