Javascript 注释引用的类在运行时抛出ReferenceError

Javascript 注释引用的类在运行时抛出ReferenceError,javascript,typescript,amd,durandal,Javascript,Typescript,Amd,Durandal,这个构建在编译时没有错误,但是当我运行它时,当我尝试使用net类时,我得到了一个ReferenceError。(未定义净额) //chat.ts文件 /// 课堂聊天{ 构造函数(公共聊天中心:任意){ net.call(chatHub.server.getUsers()); } } //net.ts文件 班级网络{ 公共呼叫(回调:()=>any):any{ //这里的东西 返回回调(); } } 我尝试过的事情: 将net转换为模块并导出函数。不起作用,因为导出会触发AMD模块转换

这个构建在编译时没有错误,但是当我运行它时,当我尝试使用net类时,我得到了一个ReferenceError。(未定义净额)

//chat.ts文件
/// 
课堂聊天{
构造函数(公共聊天中心:任意){
net.call(chatHub.server.getUsers());
} 
}
//net.ts文件
班级网络{
公共呼叫(回调:()=>any):any{
//这里的东西
返回回调();
}
} 
我尝试过的事情:

  • 将net转换为模块并导出函数。不起作用,因为导出会触发AMD模块转换,然后需要在我的chat类中导入它,这会将我的chat类转换为AMD模块,使其超出引用chat.ts的所有类的范围。AMD末日的瀑布
  • 尝试了静态、公共、模块、类和导出的所有可能排列。没有骰子

我所要做的就是从聊天室类中使用我的网络类上的实用程序功能。

您是否记得将net.js文件添加到页面(chat.js文件上方的某个位置)?仅仅在TypeScript中引用它并不能为您加载它


您需要将AMD模块定义与加载程序(如)结合使用,或者确保将所需的所有.js文件(一次一个或捆绑)添加到页面中。注释引用所做的只是告诉编译器在哪里可以找到类型信息。

我使用的是Durandal,它被设置为绑定其子文件夹中的所有内容。问题是,它没有触发一些东西,告诉它捆绑这个文件,并且无法找出为什么这是一个与您提出的问题稍有不同的问题。使用Durandal,您最好将代码打包为一个模块,并使用require加载它。我将进行更新。例如,我的聊天类是从我的Lobble类中使用的,它工作正常,绑定和引用正确。因此,您的问题与TS无关,实际上-只是Durandal绑定的问题。我自己从来没有使用过Durandal的这一部分-我一直使用AMD模块。健全性检查:net.js位于您的Durandal应用程序/文件夹下,对吗?不应该是
net.call(chatHub.server.getUsers)?嗯,你说得对,我还没有运行那个代码。
//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();
    }
}