TypeScript - 模块在运行时未定义

gip*_*ouf 11 javascript visual-studio-2012 typescript

我不明白我做错了什么.我在VS2012中创建了一个TypeScript项目,并在一个名为"Physics"的子目录中创建了一个名为"Vector.ts"的文件:

// Module
module Physics {

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

}
Run Code Online (Sandbox Code Playgroud)

另外,我有以下app.ts文件:

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

window.onload = () => {
    var vector = new Physics.Vector(6);
};
Run Code Online (Sandbox Code Playgroud)

该项目已成功编译,但是当我启动它时,我得到以下异常:

0x800a1391 - JavaScript运行时错误:'Physics'未定义

我不明白我做错了什么...

谢谢.

Jud*_*her 5

如果您使用带有模块加载程序(如Require.Js)的AMD样式模块,则需要import语句.请参阅Steve在此处接受的答案:https://stackoverflow.com/a/14919495/1014822 您的代码如下所示:

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

var vector = new Physics.Vector(6);
Run Code Online (Sandbox Code Playgroud)

......你不需要这个: /// <reference path="Physics/Vector.ts" />

如果您不使用模块加载器,则只需确保将Vector.js输出文件包含在html页面中的某个位置,并确保在应用程序文件之前加载它.在这种情况下,您/// <reference path="Physics/Vector.ts" />可以告诉TS在何处找到智能感知等模块.